zoukankan      html  css  js  c++  java
  • Qt编程18:Qt调色板QPalette的使用

    文章来源:http://blog.csdn.net/jiezhj/article/details/37657401?utm_source=tuicool

    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,指按钮窗口部件的背景色;
      QPalette::ButtonText,指按钮窗口部件的前景色

      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)。

     

    按钮使用调色板

    //对按钮使用palette----------
        //设置按钮字体
        ui->toolBt->setFont(QFont("宋体",20,QFont::Bold));
        ui->toolBt->setAutoRaise(true);
        ui->toolBt->setAutoFillBackground(true);
        QPalette pl = ui->toolBt->palette();
    
        //设置按钮文字颜色
        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);

    实现效果:




  • 相关阅读:
    MVC3、如何应用EntityFramework 连接MySql 数据库 Kevin
    DEV EXPRESS Summary Footer 不显示 Kevin
    装饰模式 Kevin
    Dev 控件 GridControl 控件 二次绑定数据源的问题。 Kevin
    System.InvalidOperationException 异常 Kevin
    LINQ to XML Kevin
    代理模式——代码版“吊丝的故事” Kevin
    VS2012 中的设备 面板 Kevin
    maven 学习笔记(三)创建一个较复杂的 eclipse+android+maven 工程
    maven 学习笔记(一)eclipse+android+maven
  • 原文地址:https://www.cnblogs.com/SunkingYang/p/11049196.html
Copyright © 2011-2022 走看看