qt中继承pushbutton自定义控件设置按钮样式
生活随笔
收集整理的這篇文章主要介紹了
qt中继承pushbutton自定义控件设置按钮样式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
提要
繼承QPushButton后的按鈕,設(shè)置其樣式。
實現(xiàn)
在自定義的控件類中添加Q_OBJECT宏
在自定義的控件的類中重寫paintevent函數(shù)
自定義的控件在使用時,必須指明其父對象
使用樣式表設(shè)置樣式,將類名改為自定義的類名
例子
直接上代碼
myButton.h
myButton.cpp
#include "mybutton.h" //#include "screenresolution.h" #include <QMouseEvent> #include <QStyleOption> #include <QBitmap> #include <QPixmap> #include <QPainter>myButton::myButton(int index,QWidget *parent) :QPushButton(parent),m_index(index) {initBtnStyle(); }myButton::~myButton() {}int myButton::getIndex() {return m_index; }void myButton::setSceneBtnId(int &id) {m_id = id; }void myButton::setSceneBtnName(QString &name) {m_strName = name; }void myButton::setSceneBtnNameId(int id, QString name) {m_id = id;m_strName = name; }int myButton::getSceneBtnId() {return m_id; }QString myButton::getScenBtnName() {return m_strName; }void myButton::getAdjustScreenRatio() {}void myButton::initBtnStyle() {QPixmap pixmap;QBitmap bit;pixmap.load(":/new/prefix1/images/sceneBtn.png");pixmap = pixmap.scaled(QSize(181 ,74),Qt::KeepAspectRatio);setFixedSize(pixmap.size());bit = pixmap.mask();setMask(bit);this->setStyleSheet("myButton{background-color:transparent;""border-image: url(:/new/prefix1/images/sceneBtn.png);""border: 1px solid #0D79FF;opacity: 0.7;""font-size: 18px;font-family: Microsoft YaHei;""font-weight: 400;color: #FFFFFF;}""myButton:pressed{border-image: url(:/new/prefix1/images/sysbtnPressed.png);""font-size: 18px;font-family: Microsoft YaHei;""font-weight: 400;color: rgba(255, 255, 255, 0.8);line-height: 18px;}"); }void myButton::slot_setSceneBtnName(QString strName) {m_strName = strName; }void myButton::slot_setSceneBtnId(int id) {m_id = id; }void myButton::paintEvent(QPaintEvent *e) {Q_UNUSED(e);QStyleOption opt;opt.init(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);QPushButton::paintEvent(e); }void myButton::mousePressEvent(QMouseEvent *e) {if(e->button() == Qt::RightButton){//創(chuàng)建編輯框,若已經(jīng)創(chuàng)建則直接顯示,綁定編輯框與按鈕來存儲修改的信息}QPushButton::mousePressEvent(e); }以上就是自定義控件的類,其使用如下,附上關(guān)鍵代碼:
myButton *btn = new myButton(0, this);//指出父類btn->setText("自定義類");btn->setGeometry(0,0,200,200);以上就是自定義控件樣式的設(shè)置。由于我重寫鼠標(biāo)點擊事件的時候,忘記了父類的鼠標(biāo)點擊事件導(dǎo)致事件沒有傳遞下去,從而沒有出現(xiàn)點擊后的效果,糾結(jié)了許久,終得解決。
總結(jié)
以上是生活随笔為你收集整理的qt中继承pushbutton自定义控件设置按钮样式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言 vprintf 函数和 prin
- 下一篇: python怎么读写_python怎么读