Начал изучать Qt по примерам программ, которые поставляются с Qt. В данный момент разбираюсь с компоновкой(Layout). Задача называется Basic Layouts. Не понял, почему не отображаются виджеты на форме.
Допустим есть код из той задачи
---------main.cpp---------------------------
#include <QApplication>
#include "LayoutTest.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Dialog dialog;
return dialog.exec();
}
-------Dialog.h-------------------------
#ifndef LAYOUTTEST_H
#define LAYOUTTEST_H
#include <QDialog>
class QMenuBar;
class QMenu;
class QAction;
class Dialog: public QDialog
{
Q_OBJECT
public:
Dialog();
private:
void createMenu();
QMenuBar *menuBar;
QMenu *fileMenu;
QAction *exitAction;
};
#endif // LAYOUTTEST_H
---Dialog.cpp------------------------
#include <QtGui>
#include "LayoutTest.h"
Dialog::Dialog()
{
createMenu();
}
void Dialog::createMenu()
{
menuBar = new QMenuBar;
fileMenu = new QMenu(tr("&File"), this);
exitAction = fileMenu->addAction(tr("&Exit"));
menuBar->addMenu(fileMenu);
connect(exitAction, SIGNAL(triggered()), this, SLOT(accept()));
}
1) Почему не отображается написанное в методе createMenu меню?
2) Почему не надо писать в main.cpp dialog.show() что бы отобразилось Главное окно(нет этой строки в данной задаче, а окно появляется все равно)?
Примечание:
так вот вышло случайно, что имя класс и имя файла не совпадают, что вполне корректно, но так делать не нужно =)
а с отображением я разобрался, нужно было добавить
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->setMenuBar(menuBar);
setLayout(mainLayout);
еще бы теперь научиться отлаживать в gdb...
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.