QColorDialog 归于QT提供于我们简单的颜色选择窗口,这是给我们开发带来的便利。但这并非“银弹”,需求总是千变万化,在尽可能避免造轮子的时候,我们也需要做出改变。
场景:
软件开发时,提供了颜色选择对话框供用户进行选择,恰好,qt提供了一个简单的QColorDialog窗口,主要的函数为:
QColor QColorDialog::**getColor**(const QColor &initial = Qt::white, QWidget *parent = Q_NULLPTR,
const QString &title = QString(), ColorDialogOptions options = ColorDialogOptions())
example:
QColor color = QColorDialog::getColor();
这是一个简单的使用返回用户所选择的颜色,默认颜色即为白色。
如果你想设计颜色对话框的Icon,那么其实很简单,QColor color = QColorDialog::getColor(Qt::white,this)
,在父窗口进行图形设置即可,该颜色窗口既可以默认设置图标。
第三个参数是对于窗口标题的设置,默认是Select Color,为什么是这样子呢?可以从源码中看到:
void QColorDialogPrivate::init(const QColor &initial)
{
Q_Q(QColorDialog);
q->setSizeGripEnabled(false);
q->setWindowTitle(QColorDialog::tr("Select Color"));
// default: use the native dialog if possible. Can be overridden in setOptions()
nativeDialogInUse = (platformColorDialogHelper() != 0);
colorPickingEventFilter = 0;
nextCust = 0;
if (!nativeDialogInUse)
initWidgets();
#ifdef Q_OS_WIN32
dummyTransparentWindow.resize(1, 1);
dummyTransparentWindow.setFlags(Qt::Tool | Qt::FramelessWindowHint);
#endif
q->setCurrentColor(initial);
}
在窗口初始化时已然被设置。
此时,可以通过color变量来获取单个通道颜色的red(),redF(),green(),greenF(),blue()和blueF()函数,需要的时候查询手册即可。
第4个参数为QColorDialog::ColorDialogOptions类型的,可以设置对话框的一些属性,如是否显示Alpha值等。
另外一种写法:
QColorDialog* colorDialog = new QColorDialog(Qt::white,this);
colorDialog->setWindowIcon(QIcon("xxx.ico"));
colorDialog->show();
colorDialog->exec();
colorDialog->close();
QColor color = colorDialog->selectedColor();
也可以直接设置窗口Icon图标和标题等,对话框属性。
在不断开发的过程中,需求总是源源不断,如何有效地将现实的需求转换成代码可以实现的模样,笔者认为这非常重要。 qt 源码的阅读以及qt手册、qt相关论坛都是不错的选择!当然,实践才是必行的一步,多做一些小代码进行测试,你总会有所收获。
----上述观点属于笔者在日常工作学习过程中的感受,以此记录分享。由于笔者才学疏浅,难免有寡陋之见。笔者将虚心听切广大才者的观点和探讨相关信息。