Поиск:

Ответ в темуСоздание новой темы Создание опроса
> последовательность кнопок в QMessageBox 
:(
    Опции темы
gordmiand
Дата 11.2.2013, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Код

 QMessageBox *box = new QMessageBox("",
                                       "hello",
                                       QMessageBox::Question,
                                       QMessageBox::Yes,
                                       QMessageBox::No,
                                       NULL);
  int answ = box->exec();
  if (answ==QMessageBox::Yes)
    qDebug() << "it's YES button";

под виндой все нормально - в созданном окошке QMessageBox-а, если смотреть слева направо, сначала идет кнопка Yes, а потом NO... в программе под линукс (ubuntu 12.4) - кнопки идут наоборот - No, затем YES и никак это не поменять (ну только если надписи на них поменять).почему так происходит под линуксом и как это поправить? и второе - под виндой как поменять порядок кнопок (например сначала NO, а потом YES) - обмен их местами в коде выше ничего не дает... 

Это сообщение отредактировал(а) gordmiand - 11.2.2013, 20:32
PM MAIL   Вверх
Amp
Дата 11.2.2013, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Порядок кнопок определяется стилем, который пытается учесть HIG платформы для которой он предназначен. Как поменять в QMessageBox  не знаю, может добавляя по-одной через addButton. Пусть знающие люди напишут.
PM MAIL   Вверх
gordmiand
Дата 11.2.2013, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



эхехе...что же так все сложно с этим QMessageBox? почему порядок кнопок не определять порядком их создания....и кто такой HIG? порядок добавления кнопок через addButton тоже не дает нужной последовательности кнопок.... 
PM MAIL   Вверх
Amp
Дата 11.2.2013, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



HIG - это Human Interface Guidelines. Набор рекомендаций по созданию интерфейсов, взаимодействию программ с пользователем и вообще с системой и интеграцией в нее. Поэтому не вижу острых причин менять порядок кнопок - пользователям Ubuntu может быть привычнее именно тот, который Qt задает.
PM MAIL   Вверх
gordmiand
Дата 12.2.2013, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



может пользователям убунту и привычнее такая Qt-шная последовательность кнопок, а мне надо сделать как во всех нормальных формах-запросах выполнения какого-либо действия - сначала (слева) кнопка "Да", а затем - "Нет"....видимо придется просто кнопкам надписи поменять и будет программно на кнопке с надписью "Да" выполняться код для кнопки "Нет" и наоборот - бред конечно, но что поделать...
подскажите тогда как поменять размер шрифта и цвет для надписи (box->setText("my text");) QMessageBox -а?
PM MAIL   Вверх
math64
Дата 13.2.2013, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



попробуй поиграться со стилями - QApplication::setStyle(style);
PM   Вверх
_GRIN_
Дата 13.2.2013, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 18.11.2007
Где: Калуга

Репутация: 6
Всего: 7



Цитата(gordmiand @  12.2.2013,  12:26 Найти цитируемый пост)
может пользователям убунту и привычнее такая Qt-шная последовательность кнопок, а мне надо сделать как во всех нормальных формах-запросах выполнения какого-либо действия - сначала (слева) кнопка "Да", а затем - "Нет"....видимо придется просто кнопкам надписи поменять и будет программно на кнопке с надписью "Да" выполняться код для кнопки "Нет" и наоборот - бред конечно, но что поделать...
подскажите тогда как поменять размер шрифта и цвет для надписи (box->setText("my text");) QMessageBox -а? 


Через мессадж бокс действительно никак - т.к. (Амп правильно сказал) он завязан на HIG (и стили с растановкой кнопок не помогут)

Я бы посоветовал свой класс мессаджбокса определить (наследуешься от QDialog) и там кнопки расставлять по своему усмотрению. Тоже изврат, но ты и хочешь "странного" (отказаться от HIG-а)



--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
math64
Дата 13.2.2013, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Порядок кнопок задаётся в QDialogButtonBoxPrivate::layoutPolicy, который устанавливается согласно QDialogButtonBox::style().
Так что установка стиля может помочь.

PM   Вверх
gordmiand
Дата 13.2.2013, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



тогда подскажите пример как задать стиль (и какой мне нужен?) для объекта QDialogButtonBox-a?
PM MAIL   Вверх
math64
Дата 14.2.2013, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Там вроде всего 4-5 вариантов. Причём Windows и Mac стилей в Linux'е нет. Трудно перебрать?
PM   Вверх
gordmiand
Дата 14.2.2013, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Задание windows-стиля мессаджбоксу не помогает в борьбе за нужную мне последовательность кнопок (Yes  No) в убунту.
в конструкторе MainWindow задаю:
Код

QApplication::setStyle("Windows"); 

виндусовый стиль виджетов применяется — все нормально...
далее
Код

    QMessageBox *box = new QMessageBox();
    box->setStyle(this->style());
    qDebug() << "style is... " <<  box->style();
    box->exec();
    ...

   дебаг выдает
style is... QWindowsStyle(0xa9b7b08, name = "windows") 

а если дебаг поставить после  exec()-a:
style is... QStyleSheetStyle(0x88baa28)
или я не тот стиль и не тому задаю? если стиль надо задавать для объекта QDialogButtonBox-а, то как мне его "привязать" к объекту моего мессаджбокса? подскажите на примере...
PM MAIL   Вверх
math64
Дата 15.2.2013, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Цитата("QApplication Class Reference")
The string must be one of the QStyleFactory::keys(), typically one of "windows", "motif", "cde", "plastique", "windowsxp", or "macintosh". Style names are case insensitive.

"windows", "windowsxp", "macintosh" - всего этого в Linux нет.
QApplication::setStyle("Windows");  какой-то стиль установит, но не "Windows". (Вернёт-то NULL, но реально какой-то стиль будет).
Рекомендуется вызывать до вызова конструктора QApplication.
остаются "motif", "cde", "plastique". Но установка стиля поменяет не только порядок кнопок, но и их внешний вид.



Это сообщение отредактировал(а) math64 - 15.2.2013, 08:02
PM   Вверх
Jeka178RUS
Дата 15.2.2013, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 3.9.2012

Репутация: нет
Всего: нет



Цитата(gordmiand @ 12.2.2013,  14:26)
может пользователям убунту и привычнее такая Qt-шная последовательность кнопок, а мне надо сделать как во всех нормальных формах-запросах выполнения какого-либо действия - сначала (слева) кнопка "Да", а затем - "Нет"....

Для тех кто в танке: это не Qt-шная последовательность, это системное предпочтение. Вы же не будете менять порядок кнопок "свернуть/развернуть/закрыть" и их положение в Mac или Gnome? 
PM MAIL   Вверх
gordmiand
Дата 15.2.2013, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Jeka178RUS: пусть это лишь и предпочтение...а мне надо принудительно задать нужный мне порядок кнопок для убунты...вопрос в том как это сделать, например, как говорят, с помощью задания стиля мессаджбоксу...
параллельно с этим возник другой вопрос - как поменять размер мессаджбокса? его методы setGeometry, setFixedSize и т.п. не помогают - вроде как размер мессаджбокса автоматом подгоняется под размеры его элементов (надписи, кнопок)...

Это сообщение отредактировал(а) gordmiand - 15.2.2013, 20:50
PM MAIL   Вверх
Amp
Дата 15.2.2013, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Зачем вообще мессаджбокс, если ты его хочешь перелопатить вдоль и поперек - изменить порядок, шрифты, размеры? Как написали выше, отнаследуйся от QDialog и сделай что тебе нужно smile
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1240 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.