QT 总结
對話框圓角化,并添加鋸齒
void DialogChooseChild::paintEvent(QPaintEvent *event) {QPainter p(this);p.setClipRegion(event->region());p.setRenderHint(QPainter::Antialiasing); // 反鋸齒; QRect contect = { 0,6,width(), height() - 6 }; //三角形位置p.setPen(Qt::transparent);QColor colorOut(255, 255, 255); //設置顏色p.setBrush(colorOut);p.drawRoundedRect(contect, 18, 18);qreal rightOut = 50;QPointF pointsOut[3] = { { rightOut, 12 },{ rightOut + 12, 0 },{ rightOut + 24, 12 } }; //三角形大小p.drawPolygon(pointsOut, 3); }構造函數中添加
setWindowFlags(Qt::FramelessWindowHint | windowFlags()); 去掉標題欄工具欄 setAttribute(Qt::WA_TranslucentBackground); //透明
?
自動添加QRadioButton
pLayout = new QVBoxLayout(ui->widget_ChooseChild);m_pButtonGroup = new QButtonGroup(ui->widget_ChooseChild);m_pButtonGroup->setExclusive(true);for (auto ite = arr_childs.begin();ite != arr_childs.end();ite++) //循環添加RadioButton控件{QRadioButton *pButton = new QRadioButton(this);pButton->setText(*ite);// 設置文本pButton->setStyleSheet("QRadioButton{border-radius:10px};"); //設置圓圈與文本的間隔if(ite == arr_childs.begin()){ //默認選擇第一個pButton->setChecked(true);pButton->setStyleSheet("QRadioButton::indicator:checked {border-image:url(:image/Checked.png);}"); //選擇圓圈的背景}pLayout->addWidget(pButton);m_pButtonGroup->addButton(pButton);}pLayout->setContentsMargins(0, 0, 0, 0);pLayout->setSpacing(7);//設置控件間的間隔//pLayout->setMargin(14);//設置頁邊距//pLayout->setAlignment( Qt::AlignHCenter );pLayout->addStretch();setLayout(pLayout);connect(m_pButtonGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(onButtonClicked(QAbstractButton*))); }槽函數
void DialogChooseChild::onButtonClicked(QAbstractButton *button) {// 遍歷按鈕,獲取選中狀態QList<QAbstractButton*> list = m_pButtonGroup->buttons();foreach (QAbstractButton *pButton, list){if(pButton->isChecked()) //選中控件pButton->setStyleSheet("QRadioButton::indicator:checked {border-image:url(:image/Checked.png);}");update();} } ?
?
?
重寫? QPushButton,以適應鼠標動作
#include "mypushbutton.h" #include <QPainter> #include <QDebug>MyPushButton::MyPushButton(QWidget *parent):QPushButton(parent) {status = NORMAL;mouse_press = false;m_bt_rc = nullptr; }MyPushButton::~MyPushButton() {if(m_bt_rc){delete m_bt_rc;m_bt_rc =nullptr;} } void MyPushButton::getBtnResource(qrc_PushButton& btn_rc){m_bt_rc = new qrc_PushButton;*m_bt_rc = btn_rc; } void MyPushButton::enterEvent(QEvent *) {status = HOVER;update(); } void MyPushButton::mousePressEvent(QMouseEvent *event) {status = PRESS;update(); } void MyPushButton::leaveEvent(QEvent *) {status = NORMAL;update(); } void MyPushButton::paintEvent(QPaintEvent *) {QPainter painter(this);QPixmap pixmap;switch(status){case HOVER:{pixmap.load(m_bt_rc->strHoverImage);setFixedSize(QPixmap(m_bt_rc->strHoverImage).size());this->setStyleSheet(m_bt_rc->StyleSheet_HoverImage);break;}case PRESS:{pixmap.load(m_bt_rc->strPressedImage);setFixedSize(QPixmap(m_bt_rc->strPressedImage).size());this->setStyleSheet(m_bt_rc->StyleSheet_PressedImage);break;}default:pixmap.load(m_bt_rc->strImage);setFixedSize(QPixmap(m_bt_rc->strImage).size());this->setStyleSheet(m_bt_rc->StyleSheet_Image);}painter.drawPixmap(rect(), pixmap);painter.drawText(this->rect(), Qt::AlignCenter, this->text());}?
? ?設置QTextEdit 滑塊的樣式
this->setStyleSheet("QScrollBar:vertical{width:6px;height:34px;background:rgba(199,199,199,0.3);}""QScrollBar::handle:vertical{width:6px;height:34px;background:rgba(199,199,199,0.05);border-radius:5px;opacity:0.3;}""QScrollBar::handle:vertical:hover{width:6px;height:34px;background:rgba(199,199,199,1);""border-radius:5px;opacity:0.3;}QScrollBar::add-line:vertical {height: 0px;subcontrol-position: bottom;subcontrol-origin: margin;}""QScrollBar::sub-line:vertical {height: 0px;subcontrol-position: top;subcontrol-origin: margin;}""");?
轉載于:https://www.cnblogs.com/lizhanzhe/p/11199304.html
總結
- 上一篇: 啤酒香瓜天花板出自哪里?
- 下一篇: js浏览器兼容性