Qt圆角功能和状态组合按钮,可以显示颜色或者图片
2016-06-18 16:23
661 查看
使用两个按钮和一个Label封装了一个功能和状态圆角组合按钮,Label用来显示颜色或者图片。
实现的效果如下:
显示图片:
显示红色:
其中颜色或者图片是通过函数设置进去的。
两个按钮:前一个是状态按钮,可以Check,表示使用此项功能;后一个按钮是功能按钮,可以Check,表示跳转到此功能对应的选项。两个按钮都有信号,可以通过信号进行连接你需要的槽函数。
具体实现代码:
#include <QPushButton>
#include <QLabel>
class QStateFunctionButton : public QWidget
{
Q_OBJECT
public:
QStateFunctionButton(QWidget *parent = 0);
~QStateFunctionButton();
void setColor(const QColor &color);
void setImage(const QImage &image);
void setText(const QString &text);
signals:
void stateButtonClicked(bool bClicked);
void functionButtonClicked(bool bClicked);
private:
QPushButton *m_stateButton;//状态按钮
QPushButton *m_functionButton;//功能按钮
QLabel *m_colorImageLabel;//显示图片或者颜色
};
本文地址:http://blog.csdn.net/u011417605/article/details/51706166
源码下载:http://download.csdn.net/detail/u011417605/9552226
实现的效果如下:
显示图片:
显示红色:
其中颜色或者图片是通过函数设置进去的。
两个按钮:前一个是状态按钮,可以Check,表示使用此项功能;后一个按钮是功能按钮,可以Check,表示跳转到此功能对应的选项。两个按钮都有信号,可以通过信号进行连接你需要的槽函数。
具体实现代码:
#include <QPushButton>
#include <QLabel>
class QStateFunctionButton : public QWidget
{
Q_OBJECT
public:
QStateFunctionButton(QWidget *parent = 0);
~QStateFunctionButton();
void setColor(const QColor &color);
void setImage(const QImage &image);
void setText(const QString &text);
signals:
void stateButtonClicked(bool bClicked);
void functionButtonClicked(bool bClicked);
private:
QPushButton *m_stateButton;//状态按钮
QPushButton *m_functionButton;//功能按钮
QLabel *m_colorImageLabel;//显示图片或者颜色
};
#include "QStateFunctionButton.h" #include <QHBoxLayout> #include <QPainter> QStateFunctionButton::QStateFunctionButton(QWidget *parent) : QWidget(parent) { m_stateButton = new QPushButton(this); m_functionButton = new QPushButton(this); m_colorImageLabel = new QLabel(this); m_stateButton->setCheckable(true); m_stateButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); m_stateButton->setStyleSheet("QPushButton{border:2px groove gray; border-top-left-radius:16px;border-bottom-left-radius:16px;border-style: outset;}" "QPushButton:checked{background-color:rgb(85, 170, 255);}"); m_functionButton->setCheckable(true); m_functionButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); m_functionButton->setStyleSheet("QPushButton{border:2px groove gray; border-top-right-radius:16px;border-bottom-right-radius:16px;border-style: outset;}" "QPushButton:checked{background-color:rgb(85, 170, 255);}"); m_colorImageLabel->setScaledContents(true); m_colorImageLabel->setFrameShadow(QFrame::Sunken); m_colorImageLabel->setFrameShape(QFrame::Shape::Panel); QHBoxLayout *pHBox = new QHBoxLayout(this); pHBox->setSpacing(0); pHBox->setContentsMargins(0, 0, 0, 0); pHBox->addWidget(m_stateButton, 1); pHBox->addWidget(m_functionButton, 3); pHBox->addWidget(m_colorImageLabel, 1); connect(m_stateButton, &QPushButton::clicked, this, &QStateFunctionButton::stateButtonClicked); connect(m_functionButton, &QPushButton::clicked, this, &QStateFunctionButton::functionButtonClicked); setColor(QColor(0, 0, 0, 255)); } QStateFunctionButton::~QStateFunctionButton() { } void QStateFunctionButton::setColor(const QColor &color) { m_colorImageLabel->setAutoFillBackground(true); QPalette pal = m_colorImageLabel->palette(); pal.setColor(QPalette::Background, color); m_colorImageLabel->setPalette(pal); } void QStateFunctionButton::setImage(const QImage &image) { QPixmap pixmap = QPixmap::fromImage(image).scaled(m_colorImageLabel->width(), m_colorImageLabel->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); m_colorImageLabel->setPixmap(pixmap); } void QStateFunctionButton::setText(const QString &text) { m_functionButton->setText(text); }交流qq:1245178753
本文地址:http://blog.csdn.net/u011417605/article/details/51706166
源码下载:http://download.csdn.net/detail/u011417605/9552226
相关文章推荐
- qt对话框
- QT线程池实验研究与分析(QThread与和QThreadPool + QRunnable使用上的区别)
- 嵌入式QT SQL中文乱码问题解决
- Qt自定义窗口部件
- Qt 学习之路 :MainWindow 简介
- qt数据库多线程问题的解决(QSqlDatabase只能在创建它的线程中使用)
- qt5集成libcurl实现tftp和ftp的方法一:搭建环境
- Qt:使用Qt creator (32bit)编译Qt creator(64bit)
- qt下的跨目录多工程编译
- 《Qt》part 2 设置软件左上角图标
- Qt Creator error: LNK1123: failure during conversion to COFF: file invalid or corrupt
- QTabWidget标签实现双击关闭的方法(推荐)
- 使用PyQt4写界面后台程序方法总结
- VS2013+QT+OPENCV配置心得
- 实现Qt日志功能并输出到文件(qDebug\qWarning\ qCritical\qFatal)
- Qt之QSS(语法高亮)
- Qt之QSS(语法高亮)
- Qt之QSS(Q_PROPERTY-自定义属性)
- Qt之QSS(Q_PROPERTY-自定义属性)
- Qt之QSS(Q_PROPERTY-原始属性)