crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QMessageBox + QCheckBox = ?, Как совместить не создавая новый класс?
posi4
  опции профиля:
сообщение 30.7.2009, 15:03
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 24.4.2009
Пользователь №: 707

Спасибо сказали: 0 раз(а)




Репутация:   0  


Нужно сделать простой MessageBox двумя кнопками и чтобы там еще был CheckBox для второстепенной опции.
Не хотелось бы писать новый виджет для этого, а как нибудь проще. Если кто знает как это сделать подскажите!
Как я не извращался с этими классами ничего не получилось.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 30.7.2009, 15:05
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(posi4 @ 30.7.2009, 16:03) *
Нужно сделать простой MessageBox двумя кнопками и чтобы там еще был CheckBox для второстепенной опции.
Не хотелось бы писать новый виджет для этого, а как нибудь проще. Если кто знает как это сделать подскажите!
Как я не извращался с этими классами ничего не получилось.

Сделать просто какое-то предупреждение с 2 кнопками можно. QMessageBox для этого есть. Ты поясни, что ты хочешь получить, при нажатии на этот чекбокс?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 30.7.2009, 15:26
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(posi4 @ 30.7.2009, 16:03) *
Как я не извращался с этими классами ничего не получилось


А как ты извращался? Метод void QMessageBox::addButton ( QAbstractButton * button, ButtonRole role ) должен помочь, QCheckBox на базе класса QAbstractButton.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
posi4
  опции профиля:
сообщение 30.7.2009, 15:55
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 24.4.2009
Пользователь №: 707

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
Сделать просто какое-то предупреждение с 2 кнопками можно. QMessageBox для этого есть. Ты поясни, что ты хочешь получить, при нажатии на этот чекбокс?


Допустим вот так: вызывается MessageBox, что то типа "Значения были изменены! Подтвердить?" -> две кнопки "OK", "Cancel" и
в этом MessageBox'e над кнопками CheckBox, что-нибудь такое "Создать резервный файл текущих настроек". Т.е. нужно указывать
создавать или нет.

Цитата
А как ты извращался? Метод void QMessageBox::addButton ( QAbstractButton * button, ButtonRole role ) должен помочь, QCheckBox на базе класса QAbstractButton.


Именно с этим методом и извращался. Я тоже подумал что все кнопки от QAbstractButton, но компилятор не хочет подставлять QCheckBox в
QAbstractButton. А почему не пойму! Ведь по сути QPushButton и QCheckBox - это близнецы!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 30.7.2009, 15:57
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(posi4 @ 30.7.2009, 16:55) *
Я тоже подумал что все кнопки от QAbstractButton, но компилятор не хочет подставлять QCheckBox в
QAbstractButton. А почему не пойму! Ведь по сути QPushButton и QCheckBox - это близнецы!

Показал-бы свой код. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
posi4
  опции профиля:
сообщение 30.7.2009, 16:25
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 52
Регистрация: 24.4.2009
Пользователь №: 707

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вроде разобрался, просто неправильно тип приводил!
Но теперь другое дело, как в мессэджбоксе кнопки расположить друг над другом? Есть такая возможность?
А то они у меня в строчку!

QMessageBox msg;
msg.setText("The values has been modified.");
msg.setInformativeText("Do you want to save your previous state?");
msg.setStandardButtons(QMessageBox::Save | QMessageBox::Cancel);
msg.setDefaultButton(QMessageBox::Save);
QCheckBox* checkFlag = new QCheckBox();
msg.addButton((QAbstractButton*)checkFlag, QMessageBox::ActionRole);
msg.exec();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 30.7.2009, 16:46
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Я так и думал, что у тебя возникнет этот вопрос. ИМХО тебе проще будет сделать свой диалог унаследовав QDialog. Если не хочется, тогда надо найти способ получить layout у QMessageBox и перестроить его детей как тебе нужно. Только это не правильно и может не сработать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 30.7.2009, 16:56
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(SABROG @ 30.7.2009, 17:46) *
ИМХО тебе проще будет сделать свой диалог унаследовав QDialog.

+1
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 15.9.2019, 15:09