Qt学习之路(16):Qt标准对话框之QColorDialog

继续来说Qt的标准对话框,这次说说QColorDialog。这是Qt提供的颜色选择对话框。

使用QColorDialog也很简单,Qt提供了getColor()函数,类似于QFileDialog的getOpenFileName(),可以直接获得选择的颜色。我们还是使用前面的QAction来测试下这个函数:

QColor color = QColorDialog::getColor(Qt::white, this);
QString msg = QString("r: %1, g: %2, b: %3").arg(QString::number(color.red()), QString::number(color.green()), QString::number(color.blue()));
QMessageBox::information(NULL, "Selected color", msg);

不要忘记include QColorDialog哦!这段代码虽然很少,但是内容并不少。

第一行QColorDialog::getColor()调用了QColorDialog的static函数getColor()。这个函数有两个参数,第一个是QColor类型,是对话框打开时默认选择的颜色,第二个是它的parent。

第二行比较长,涉及到QString的用法。如果我没记错的话,这些用法还没有提到过,本着“有用就说”的原则,尽管这些和 QColorDialog毫不相干,这里还是解释一下。QString("r: %1, g: %2, b: %3")创建了一个QString对象。我们使用了参数化字符串,也就是那些%1之类。在Java的properties文件中,字符参数是用{0}, {1}之类实现的。其实这都是一些占位符,也就是,后面会用别的字符串替换掉这些值。占位符的替换需要使用QString的arg()函数。这个函数会返回它的调用者,因此可以使用链式调用写法。它会按照顺序替换掉占位符。然后是QString::number()函数,这也是QString的一个 static函数,作用就是把int、double等值换成QString类型。这里是把QColor的R、G、B三个值输出了出来。关于QString 类,我们会在以后详细说明。

第三行就比较简单了,使用一个消息对话框把刚刚拼接的字符串输出。

现在就可以运行这个测试程序了。看上去很简单,不是吗?

QColorDialog还有一些其他的函数可以使用。

QColorDialog::setCustomColor()可以设置用户自定义颜色。这个函数有两个值,第一个是自定义颜色的索引,第二个是自定义颜色的RGB值,类型是QRgb,大家可以查阅API文档来看看这个类的使用,下面只给出一个简单的用发:

QColorDialog::setCustomColor(0, QRgb(0x0000FF));

getColor()还有一个重载的函数,签名如下:

QColorDialog::( const QColor & initial, QWidget * parent, const QString & title, ColorDialogOptions options = 0 )

第一个参数initial和前面一样,是对话框打开时的默认选中的颜色;

第二个参数parent,设置对话框的父组件;

第三个参数title,设置对话框的title;

第四个参数options,是QColorDialog::ColorDialogOptions类型的,可以设置对话框的一些属性,如是否显示Alpha值等,具体属性请查阅API文档。特别的,这些值是可以使用OR操作的。

QColorDialog相对简单一些,API文档也很详细,大家遇到问题可以查阅文档的哦!

出处:http://devbean.blog.51cto.com/448512/214164

时间: 2024-08-26 06:45:30

Qt学习之路(16):Qt标准对话框之QColorDialog的相关文章

Qt学习之路(18):Qt标准对话框之QInputDialog

这是Qt标准对话框的最后一部分.正如同其名字显示的一样,QInputDialog用于接收用户的输入.QInputDialog提供了一些简单的static函数,用于快速的建立一个对话框,正像QColorDialog提供了getColor函数一样. 首先来看看getText函数: bool isOK; QString text = QInputDialog::getText(NULL, "Input Dialog","Please input your comment"

Qt学习之路(17):Qt标准对话框之QMessageBox

现在还是继续来说说Qt的标准对话框吧! 这次来说一下QMessageBox以及类似的几种对话框.其实,我们已经用过QMessageBox了,就在之前的几个程序中.不过,当时是大略的说了一下,现在专门来说说这几种对话框. 先来看一下最熟悉的QMessageBox::information.我们在以前的代码中这样使用过: QMessageBox::information(NULL, "Title", "Content", QMessageBox::Yes | QMess

Qt学习之路(15):Qt标准对话框之QFileDialog

下面还是按照我们的进度,从Qt的标准对话框开始说起.所谓标准对话框,其实就是Qt内置的一些对话框,比如文件选择.颜色选择等等.今天首先介绍一下QFileDialog. QFileDialog是Qt中用于文件打开和保存的对话框,相当于Swing里面的JFileChooser.下面打开我们前面使用的工程.我们已经很有先见之明的写好了一个打开的action,还记得前面的代码吗?当时,我们只是弹出了一个消息对话框(这也是一种标准对话框哦~)用于告知这个信号槽已经联通,现在我们要写真正的打开代码了! 修改

Qt学习之路(7):创建一个对话框(上)

首先说明一点,在C++ GUI Programming with Qt4, 2nd中,这一章连同以后的若干章一起,完成了一个比较完整的程序--一个模仿Excel的电子表格.不过这个程序挺大的,而且书中也没有给出完整的源代码,只是分段分段的--我不喜欢这个样子,我想要看到我写出来的是什么东西,这是最主要的,而不是慢慢的过上几章的内容才能看到自己的作品.所以,我打算换一种方式,每章只给出简单的知识,但是每章都能够运行出东西来.好了,扯完了,下面开始! 以前说的主要是一些基础知识,现在我们来真正做一个

Qt学习之路(8):创建一个对话框(下)

接着前一篇,下面是源代码部分: #include <QtGui> #include "finddialog.h" FindDialog::FindDialog(QWidget *parent) : QDialog(parent) { label = new QLabel(tr("Find &what:")); lineEdit = new QLineEdit; label->setBuddy(lineEdit); caseCheckBox

Qt 学习之路 2 --- 读书笔记

一.文章来由 来自豆子老师非常好的一本Qt教程,但是只有网络版,所以用这个做笔记了,不动笔墨不读书嘛~~ 二.读书笔记 1.Qt 学习之路 2(2):Qt 简介 1.1 关于 Qt 的一站式解决 Qt 是一个著名的 C++ 应用程序框架.但并不只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个"一站式"的解决方案:不再需要研究 STL,不再需要 C++ 的,不再需要到处去找解析 XML.连接数据库.访问网络的各种第三方库,因为

Qt学习之路(23):自定义事件

Qt允许你创建自己的事件类型,这在多线程的程序中尤其有用,当然,也可以用在单线程的程序中,作为一种对象间通讯的机制.那么,为什么我需要使用事件,而不是使用信号槽呢?主要原因是,事件的分发既可以是同步的,又可以是异步的,而函数的调用或者说是槽的回调总是同步的.事件的另外一个好处是,它可以使用过滤器. Qt中的自定义事件很简单,同其他类似的库的使用很相似,都是要继承一个类进行扩展.在Qt中,你需要继承的类是QEvent.注意,在Qt3中,你需要继承的类是QCustomEvent,不过这个类在Qt4中

Qt学习之路(19):事件(event)

前面说了几个标准对话框,下面不打算继续说明一些组件的使用,因为这些使用很难讲完,很多东西都是与实际应用相关的.实际应用的复杂性决定了我们根本不可能把所有组件的所有使用方法都说明白.这次来说说Qt相对高级一点的特性:事件. 事件(event)是有系统或者Qt本身在不同的时刻发出的.当用户按下鼠标,敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件是在对用户操作做出响应的时候发出,如键盘事件等:另一些事件则是由系统自动发出,如计时器事件. 一般来说,使用Qt编程时,我们并不会把

Qt学习之路(2):Hello,world!

任何编程技术的学习第一课基本上都会是Hello, world!,我也不想故意打破这个惯例--照理说,应该首先回顾一下Qt的历史,不过即使不说这些也并无大碍. 或许有人总想知道,Qt这个单词是什么意思.其实,这并不是一个缩写词,仅仅是因为它的发明者,TrollTech公司的 CEO,Haarard Nord和Trolltech公司的总裁Eirik Chambe-Eng在联合发明Qt的时候并没有一个很好的名字.在这里,字母Q是Qt库中所有类的前缀--这仅仅是因为在Haarard的emacs的字体中,