QColorDialog Icon设置

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相关论坛都是不错的选择!当然,实践才是必行的一步,多做一些小代码进行测试,你总会有所收获。

----上述观点属于笔者在日常工作学习过程中的感受,以此记录分享。由于笔者才学疏浅,难免有寡陋之见。笔者将虚心听切广大才者的观点和探讨相关信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值