• Qt编程18:Qt调色板QPalette的使用


    QPalette类有两个枚举类型,

    枚举

    1、ColorGroup

      CorGroup指的是3中不同的状态(什么时候设置颜色):

       1>Active:获得焦点的状态。

       2>Inactive:未获得焦点的状态。

       3>Disable:不可用状态。

    通常情况下。Active状态与Inactive状态下颜色显示是一致的。当然也可依据须要设置成不一样的颜色

     

    2、ColorRole(设置什么颜色)。
      ColorRole指的是颜色主题。即对窗口中不同部位颜色的分类,如QPalette::Window是指背景色,QPalette::WindowText指的是前景色等。

      经常使用:

      QPalete::Window, 通常指窗体部件的背景色;
      QPalette:WindowText,通常指窗体不见的前景色(QLabel也能够使用);
      QPalette::Base,指文本输入窗体部件(比方QTextEdit,QLinedit,QPlainTextEdit等)的背景色
      QPalette::Text,与QPalette::Base一块使用,指文本输入窗体部件的前景色;
      QPalette::Button,指button窗体部件的背景色;
      QPalette::ButtonText,指button窗体部件的前景色

      QPalette::Highlight:用于设置文字高亮时的背景颜色

      QPalette::HighlightedText:用于设置文字高亮时的颜色

      QPalette::Link:超链接文字颜色

      QPalette::LinkVisted:超链接文字訪问后的颜色

     

      (眼下使用的非常少,可是能够直接拿来用)由于,带有默认色

      QPalette::Light:比Button的亮

     QPalette::Midlight:亮度在Light与Button之间

      QPalette::Dark:

      QPalette::Mid

      QPalette::Shadow

    比如:

        //设置能够自己主动填充背景色
        ui->label->setAutoFillBackground(true);
        //设置背景色为Palette::Shadow
        ui->label->setBackgroundRole(QPalette::Shadow);
        
        ui->label2->setAutoFillBackground(true);
        ui->label2->setBackgroundRole(QPalette::Light)


    显示效果:

    //----------------------------------------------------------------------------------------------------------------设置颜色的方法:

    QPalette::setColor()针对某个ColoRole设置颜色
    QPalette::setBrush()针对某个ColoRole设置颜色。能够设置图片

     

    注意:在设置背景色的时候,首先调用setAutoFillBackGround(true)。

     

    button使用调色板

    //对button使用palette----------
        //设置button字体
        ui->toolBt->setFont(QFont("宋体",20,QFont::Bold));
        ui->toolBt->setAutoRaise(true);
        ui->toolBt->setAutoFillBackground(true);
        QPalette pl = ui->toolBt->palette();
    
        //设置button文字颜色
        pl.setColor(QPalette::ButtonText,QColor(Qt::red));
        //使用setBrush设置图片
        pl.setBrush(QPalette::Button,QBrush(QPixmap(":/new/resources/otherPage/tap_bg.png")));
        ui->toolBt->setPalette(pl);


    效果:

     

    QTextBrowser或QTextEdit使用调色板(文字编辑框)

        //设置部件文字属性
        ui->plainTextEdit->setFont(QFont("宋体",20,QFont::Bold));     //有效果
        ui->textBrowser->setFont(QFont("宋体",20,QFont::Bold));       //没有效果(QTextBrowser带有文字编辑功能)
        QFont font = ui->textBrowser->font();
        font.setCapitalization(QFont::AllUppercase);
        ui->textBrowser->setFont(font);                               //有效果
    
        //构造QPalette对象
        QPalette p2;
        //设置文本编辑框的背景色
        p2.setColor(QPalette::Base,QColor(Qt::gray));
        //设置文本编辑框文字的颜色
        p2.setColor(QPalette::Text,QColor(Qt::red));
        //设置文本编辑框高亮时的文字背景颜色(Active)
        p2.setColor(QPalette::Active,QPalette::Highlight,QColor(Qt::white));
        //设置文本编辑框高亮时文字的颜色(Active)
        p2.setColor(QPalette::Active,QPalette::HighlightedText,QColor(Qt::blue));
    
        //为保持文本状态一致(好看一些),在丢失焦点的时候设置颜色
        p2.setColor(QPalette::Inactive,QPalette::Highlight,QColor(Qt::gray));
        p2.setColor(QPalette::Inactive,QPalette::HighlightedText,QColor(Qt::red));
    
        //将焦点应用到控件
        ui->plainTextEdit->setPalette(p2);
        ui->textBrowser->setPalette(p2);

    实现效果:



  • 相关阅读:
    java.util.concurrent学习
    mysql慢查优化总结
    mysql怎么限制某些查询语句的执行?
    数据库操作提交事务如果不关闭,会有什么样的后果?
    apache的500错误是写到哪个文件里面
    apache也可以做负载均衡,跟nignx的区别是什么?
    ajax提交请求为啥url要用这个函数encodeURI
    MySQL性能调优与架构设计读书笔记
    java枚举的作用
    linux的命令
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5363829.html
Copyright © 2020-2023  润新知