Удаление окна цветового градиента из Qt5 ColorDialog

Это стандартная коробка Color Dialog из Qt5

введите здесь описание изображения

Можно ли просмотреть только основные цвета и убрать цветовой градиент из диалога?


person user1036908    schedule 14.08.2014    source источник


Ответы (2)


Я нашел простое решение этой проблемы. Это не удаление, но с моим кодом мы не можем видеть этот градиент и не можем его использовать.

Нам нужно создать подкласс. Давайте закодируем:

mycolordialog.h

#ifndef MYCOLORDIALOG_H
#define MYCOLORDIALOG_H

#include <QColorDialog>
#include <QLabel>

class MyColorDialog : public QColorDialog
{
    Q_OBJECT
public:
    explicit MyColorDialog(QWidget *parent = 0);

signals:

public slots:


};

#endif // MYCOLORDIALOG_H

mycolordialog.cpp

#include "mycolordialog.h"

MyColorDialog::MyColorDialog(QWidget *parent) :
    QColorDialog(parent)
{
    QLabel * l = new QLabel("Teeeeext",this);
    l->setGeometry(245,5,325,215);//this values control the area and position of label
    //you can change this values and remove another area of main dialog window

    QPixmap pixmap("G:/2/qt.jpg");
    l->setPixmap(pixmap.scaled(325,215,Qt::IgnoreAspectRatio));;//resize our picture
    l->show();
}

Как это использовать???

#include "mycolordialog.h"
//...
void MainWindow::on_pushButton_16_clicked()
{
    MyColorDialog cd;
    cd.exec();
    qDebug() << cd.selectedColor();
}

Вы можете установить в метке красивый логотип вашего приложения или что-то другое. Я использую логотип отсюда http://reichertbrothers.com/images/qt-logo.png , но я конвертирую его в формат jpg.

Что мы получаем???

введите здесь описание изображения

Обратите внимание, что все другие области доступны, и вы можете выбрать любой цвет и работать, как хотите, но это окно градиента удалено!

Я надеюсь, что это помогает.

person Kosovan    schedule 15.08.2014

Параметры, которые вы можете выбрать для изменения внешнего вида диалогового окна цвета, находятся в QColorDialog документация.

    enum ColorDialogOption {
    ShowAlphaChannel    = 0x00000001,
    NoButtons           = 0x00000002,
    DontUseNativeDialog = 0x00000004
    };

Эти параметры не скрывают палитру цветов, поэтому вам придется реализовать собственную палитру цветов.

person Vazquinhos    schedule 14.08.2014