2010-10-22 6 views
0

Возможно ли получить макет из объекта QMenuBar и добавить к нему элементы. То, что я пытаюсь сделать, это панель меню, содержащая пользовательские виджеты (часы и виджет входа/выхода) справа. Этот код сбой.Использование макета QMenuBar

QPushButton *b1 = new QPushButton("Button",ui->menuBar); 
QHBoxLayout *rlayout = new QHBoxLayout(this); 
ui->menuBar->layout()->addItem(rlayout); 
rlayout->addWidget(b1); 
b1->show(); 

Есть ли другой способ? С уважением, Valentin Heinitz

ответ

1

Можно ли создать собственный виджет контейнера, поместить панель меню слева, а остальные виджеты справа? Это должно обеспечить вам аналогичную функциональность и внешний вид для версии Qt3 в строке меню.

+0

Хорошая идея с помощью строки меню слева. Я взял виджет и разместил два горизонтальных макета для меню и кнопок. управляя меню слева, но вместо этого попробуйте свое предложение. Спасибо! –

0

Вы должны изучить QWidgetAction, что позволяет вставлять пользовательский виджет в строку меню. Затем вам нужно будет позвонить QMenuBar::addAction(QAction*), чтобы добавить QWidgetAction в меню.

Я знаю, что это не часть вашего вопроса, но возможноQDockWidget будет лучше работать за то, что вам нужно ???

Надеюсь, это поможет.

+0

Нет, это не поможет, извините. Я переношу приложение с qt3 на qt4. GUI должен выглядеть похожим, мне нужен меню-бар. Спасибо вам за ответ. –

+0

Может быть что-то в классах поддержки Qt3? Вы проверили? – Live

+0

Извините, мой первый комментарий относится только к QDockWidget. Добавление QWidgetAction в QMenuBar не имеет эффекта (s. Http://stackoverflow.com/questions/3915327/adding-custom-widgets-to-qmenubar). В Qt4 класс поддержки Qt3 для строки меню не содержит перегрузки QMenuBar :: insertItem с параметром QWidget * :-( –

Смежные вопросы