逛奔的蜗牛

我不聪明,但我会很努力

   ::  :: 新随笔 ::  ::  :: 管理 ::


Widget::Widget(QWidget *parent)

    : QWidget(parent), ui(new Ui::Widget) {

    ui->setupUi(this);

    connect(ui->button, SIGNAL(clicked()), this, SLOT(setColor()));


    QPalette p = palette();

    p.setColor(QPalette::Text, QColor(0, 255, 0));

    setPalette(p); // 注意这里, 修改了widget的调色板, 子窗口ui->lineEdit的颜色变化.

}


Widget::~Widget() {

    delete ui;

}


void Widget::setColor() {

    QPalette palette = ui->lineEdit->palette();

    const QColor &color = QColorDialog::getColor(palette.color(QPalette::Background), this);

    if (color.isValid()) {

        palette.setColor(QPalette::Highlight, color);

        ui->lineEdit->setPalette(palette);

    }

}


palette.setColor(QPalette::Highlight, color);

此处:

QPalette::Highlight // 被选中后文字的背景色.

QPalette::HighlightText // 被选中后文字的前景色.

QPalette::Text // 文字的前景色

QPalette::Base // QTextEdit的背景色, 默认是白色的.


Role: Qt中会有一组数据, 当取得这些数据时, 使用同样的方法去获取, 为了指明是取得哪种数据, 所以就定义了Role这种概念, 来指明要获取的数据的类型, 例如在View中, 如有显示的文字, 图标, 真正有用的数据(可能没有显示出来, 而是在内部存储着), 取得这些数据都是用同一个方法data(), 通过指明数据的角色来获得.


所有Qt窗口部件都拥有一个QPalette, 并使用它绘制自己. 应用程序还有一个调色板, 通过QApplication::palette()来获得. 修改一个窗口部件的调色板, 只影响这个窗口部件以及子窗口部件(不包含子窗口, 如只是以他作为父对象来管理内存, 而不在他里面显示), 而修改应用程序的调色板, 会影响到该应用程序的所有窗口部件


posted on 2009-05-28 16:14 逛奔的蜗牛 阅读(8492) 评论(2)  编辑 收藏 引用 所属分类: QtQt自定义Widget

评论

# re: QtWidget: 设置QTextEdit的各种颜色 2013-02-06 15:33 gnepnaur
非常感谢博主的这篇文章,帮我解决个大问题。  回复  更多评论
  

# re: QtWidget: 设置QTextEdit的各种颜色 2014-11-05 18:21 vnseo
Vnseo estimate unique visitor per day. Alexa Rank Global, Rank in . estimate worth $ and estimate earn $ from Google Adsense per day.
http://vnseo.com/friv-planet.com
http://vnseo.com/juegos-friv-10.com
http://vnseo.com/friv-top.com  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理