Russian Qt Forum
Октябрь 01, 2024, 20:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Заголовок для QColorDialog ?  (Прочитано 6807 раз)
zayac_val
Гость
« : Ноябрь 18, 2009, 10:32 »

Есть такой класс QColorDialog, мне очень хочетса задать свой заголовок диалогового окна, а не "select color", это вобще возможно ?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Ноябрь 18, 2009, 10:37 »

Все визуальные компоненты - наследники QWidget, а виджетам, если они являются окнами, можно задавать заголовок.
Смотри список унаследованных членов и найди там функцию содержащую слово "Title"
Записан

Юра.
zayac_val
Гость
« Ответ #2 : Ноябрь 18, 2009, 10:52 »

В принцепе, проблема заключается в том, что для того чтоб воспользоваться setWindowTitle, унаследованной от QWidget нужно создать экземпляр класса QColorDialog, а у него конструктор private и соответственно компилятор матом кроет на любую попытку создать объект QColorDialog. Это как-то можно обойти ?
Записан
spectre71
Гость
« Ответ #3 : Ноябрь 18, 2009, 10:59 »

В принцепе, проблема заключается в том, что для того чтоб воспользоваться setWindowTitle, унаследованной от QWidget нужно создать экземпляр класса QColorDialog, а у него конструктор private и соответственно компилятор матом кроет на любую попытку создать объект QColorDialog. Это как-то можно обойти ?
У кого - кто private. Ты хоть сам понимаешь о чем пишешь?
lit-uriy тебе ответил на вопрос.
Записан
zayac_val
Гость
« Ответ #4 : Ноябрь 18, 2009, 11:20 »

В принцепе, проблема заключается в том, что для того чтоб воспользоваться setWindowTitle, унаследованной от QWidget нужно создать экземпляр класса QColorDialog, а у него конструктор private и соответственно компилятор матом кроет на любую попытку создать объект QColorDialog. Это как-то можно обойти ?
У кого - кто private. Ты хоть сам понимаешь о чем пишешь?
lit-uriy тебе ответил на вопрос.

Вот header файл класса QColorDialog  -> qcoordialog.h
Код:
#ifndef QCOLORDIALOG_H
#define QCOLORDIALOG_H

#include <QtGui/qdialog.h>

QT_BEGIN_HEADER

QT_BEGIN_NAMESPACE

QT_MODULE(Gui)

#ifndef QT_NO_COLORDIALOG

class QColorDialogPrivate;

class Q_GUI_EXPORT QColorDialog : public QDialog
{
    Q_OBJECT
    Q_DECLARE_PRIVATE(QColorDialog)

public:
    static QColor getColor(const QColor& init = Qt::white, QWidget* parent=0);
    static QRgb getRgba(QRgb = 0xffffffff, bool* ok = 0, QWidget* parent=0);

    static int customCount();
    static QRgb customColor(int);
    static void setCustomColor(int, QRgb);
    static void setStandardColor(int, QRgb);

#ifdef QT3_SUPPORT
    static QColor getColor(const QColor& init, QWidget* parent, const char* name)
        { Q_UNUSED(name); return getColor(init, parent); }
    static QRgb getRgba(QRgb rgba, bool* ok, QWidget* parent, const char* name)
        { Q_UNUSED(name); return getRgba(rgba, ok, parent); }
#endif

protected:
    void changeEvent(QEvent *e);
private:
    ~QColorDialog();
    explicit QColorDialog(QWidget* parent=0, bool modal=false);

    void setColor(const QColor&);
    QColor color() const;

    bool selectColor(const QColor&);

    void setSelectedAlpha(int);
    int selectedAlpha() const;

    void showCustom(bool=true);

private:
    Q_DISABLE_COPY(QColorDialog)

    Q_PRIVATE_SLOT(d_func(), void _q_addCustom())

    Q_PRIVATE_SLOT(d_func(), void _q_newHsv(int h, int s, int v))
    Q_PRIVATE_SLOT(d_func(), void _q_newColorTypedIn(QRgb rgb))
    Q_PRIVATE_SLOT(d_func(), void _q_newCustom(int, int))
    Q_PRIVATE_SLOT(d_func(), void _q_newStandard(int, int))

    friend class QColorShower;
};

#endif // QT_NO_COLORDIALOG

QT_END_NAMESPACE

QT_END_HEADER

#endif // QCOLORDIALOG_H

попробуйте создать объект QColorDialog *cd=new QColorDialog(widget,boole);
rкомпилятор выдаст:   error: 'QColorDialog::QColorDialog(QWidget*,bool)' is private

Может я конечно где-то очень сильно ошибаюсь, но если так то очень прошу объяснить где?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Ноябрь 18, 2009, 11:23 »

zayac_val, у тебя Qt какой версии?
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Ноябрь 18, 2009, 11:26 »

если ниже 4.5.x, то, возможно, через наследование, хотя сомнительно. Скорее всего просто штатный диалог ОСьки вызывается.
Записан

Юра.
zayac_val
Гость
« Ответ #7 : Ноябрь 18, 2009, 11:34 »

если ниже 4.5.x, то, возможно, через наследование, хотя сомнительно. Скорее всего просто штатный диалог ОСьки вызывается.

да, Qt  у меня 4.4
Записан
shadone
Гость
« Ответ #8 : Ноябрь 18, 2009, 13:57 »

если ниже 4.5.x, то, возможно, через наследование, хотя сомнительно. Скорее всего просто штатный диалог ОСьки вызывается.

да, Qt  у меня 4.4
Создать экземпляр QColorDialog можно только начиная с 4.5.0 - http://doc.trolltech.com/4.5/qcolordialog.html
Уже вышел релиз-кандидат 4.6.0, давно пора обновляться! Улыбающийся
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #9 : Ноябрь 18, 2009, 15:07 »

Уже вышел релиз-кандидат 4.6.0, давно пора обновляться! Улыбающийся
угу. прыгать на непроверенные релизы - мега моветон.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
shadone
Гость
« Ответ #10 : Ноябрь 18, 2009, 16:10 »

Уже вышел релиз-кандидат 4.6.0, давно пора обновляться! Улыбающийся
угу. прыгать на непроверенные релизы - мега моветон.
я неточно выразился - я имел ввиду "уже вышел релиз кандидат 4.6.0, давно пора обновиться хотя бы до 4.5". (и добавлю - "релиз-кандидат" означает что качество уже близко к релизному - т.е. 99% функциональности работает без проблем).
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Ноябрь 18, 2009, 16:23 »

В принцепе, проблема заключается в том, что для того чтоб воспользоваться setWindowTitle, унаследованной от QWidget нужно создать экземпляр класса QColorDialog, а у него конструктор private и соответственно компилятор матом кроет на любую попытку создать объект QColorDialog. Это как-то можно обойти ?
Не понял - зачем наследоваться? Почему не так
Код:
QColorDialog * dlg = new QColorDialog(this);
dlg->setWindowTitle("My Title");
..
dlg->open();

Edit: пардон, забыл что речь идет о старой Qt версии  Улыбающийся
« Последнее редактирование: Ноябрь 18, 2009, 16:44 от Igors » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Ноябрь 18, 2009, 16:31 »

Igors, в Qt4.4.x нет открытого конструктора у класса QColorDialog, есть только статические члены
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.083 секунд. Запросов: 23.