上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
5.2 标准颜色对话框:QColorDialog类
5.2.1 函数说明
标准颜色对话框QColorDialog类的一个静态函数:getColor()函数返回用户选择的颜色值,下面是getColor()函数形式:
QColor getColor ( const QColor& initial=Qt::white, //注 QWidget* parent=0 //标准颜色对话框的父窗口 );
注:指定了默认选中的颜色,默认为白色。通过QColor::isValid()可以判断用户选择颜色是否有效,但是当用户在选择文件时,如果选择“取消(Cancel)”,QColor::isValid()将返回false。
5.2.2 创建步骤
下面是创建一个标准颜色对话框的详细步骤:
(1) 在dialog.h中,添加private成员变量如下:
QPushButton *colorBtn; QFrame *colorFrame;
(2) 添加private slots槽函数:
void showColor();
(3) 在dialog.cpp中,构造函数中的代码如下:
colorBtn=new QPushButton; //创建各个控件的对象 colorBtn->setText(tr("颜色标准对话框实例")); colorFrame=new QFrame; colorFrame->setFrameShape(QFrame::Box); colorFrame->setAutoFillBackground(true);
其中QFrame的对象colorFrame是根据用户选择不同颜色更新不同的背景。
在布局管理中添加代码:
mainLayout->addWidget(colorBtn,1,0); //布局设计 mainLayout->addWidget(colorFrame,1,1);
最后添加事件关联:
connect(colorBtn,SIGNAL(clicked()),this,SLOT(showColor())); //事件关联
其中,槽函数showColor()的实现代码如下:
void Dialog::showColor() { QColor c = QColorDialog::getColor(Qt::blue); if(c.isValid())//if the user cancels the dialog,it returns an invalid color { colorFrame->setPalette(QPalette(c)); } }
(4) 在文件开始添加头文件:
#include <QColorDialog>
(5) 运行该程序后,单击“颜色标准对话框实例”按钮后显示如图5.3所示界面。选择某一颜色,单击“OK”按钮,此选择的颜色将显示在Dialog对话框的右边的标签中。