Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ QMessageBox + QCheckBox = ?

Автор: posi4 30.7.2009, 15:03

Нужно сделать простой MessageBox двумя кнопками и чтобы там еще был CheckBox для второстепенной опции.
Не хотелось бы писать новый виджет для этого, а как нибудь проще. Если кто знает как это сделать подскажите!
Как я не извращался с этими классами ничего не получилось.

Автор: AD 30.7.2009, 15:05

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

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

Автор: SABROG 30.7.2009, 15:26

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


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

Автор: posi4 30.7.2009, 15:55

Цитата
Сделать просто какое-то предупреждение с 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

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

Показал-бы свой код. ;)

Автор: posi4 30.7.2009, 16:25

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

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

Я так и думал, что у тебя возникнет этот вопрос. ИМХО тебе проще будет сделать свой диалог унаследовав QDialog. Если не хочется, тогда надо найти способ получить layout у QMessageBox и перестроить его детей как тебе нужно. Только это не правильно и может не сработать.

Автор: BRE 30.7.2009, 16:56

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

+1

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)