Qt 4开发实践
上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对话框的右边的标签中。