zoukankan      html  css  js  c++  java
  • 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{6px;height:34px;background:rgba(199,199,199,0.3);}"
                "QScrollBar::handle:vertical{6px;height:34px;background:rgba(199,199,199,0.05);border-radius:5px;opacity:0.3;}"
                "QScrollBar::handle:vertical:hover{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;}"
                "");
  • 相关阅读:
    yolo v2使用总结
    Oozie 实战之 shell
    Oozie 之 sqoop 实战
    Oozie 实战之 Hive
    Oozie wordcount实战
    Oozie 安装及 examples app 的使用
    Oozie是什么
    Flume使用(案例分析)
    一个数据仓库的设计架构
    Flume是什么
  • 原文地址:https://www.cnblogs.com/lizhanzhe/p/11199304.html
Copyright © 2011-2022 走看看