Я пытаюсь создать программу документа MDI. У меня вопрос о создании подзаголовка.Qt создает окно документа MDI
Это мой MainWindow конструктор:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle(tr("MDI"));
workspace = new QMdiArea;
setCentralWidget(workspace);
//fileNew();
createActions();
createMenus();
createToolbars();
statusBar()->showMessage(tr("Done"));
enableActions();
}
Интересным моментом является fileNew();
функция. Это частная функция слота, которую я хочу вызвать, когда запускается кнопка «Новый файл». Вот частный слот fileNew()
функция:
void MainWindow::fileNew()
{
DocumentWindows* document = new DocumentWindows;
workspace->addSubWindow(document);
}
Эта функция отлично работает, когда я звоню из конструктора MainWindow. Однако возникает проблема, когда я вызываю ее из функции createActions();
, которая использует механизм сигнального слота.
Здесь пока мой createActions()
void MainWindow::createActions()
{
newAction = new QAction(QIcon(":/Image/NewFile.png"),tr("&New"),this);
newAction->setShortcut(tr("Ctrl+N"));
newAction->setToolTip(tr("Open new document"));
connect(newAction, SIGNAL(triggered(bool)), this, SLOT(fileNew()));
}
Нет Субокно создается даже SLOT срабатывает. Впоследствии я узнаю, что если я добавлю document->show();
, все будет хорошо.
void MainWindow::fileNew()
{
DocumentWindows* document = new DocumentWindows;
workspace->addSubWindow(document);
document->show();
}
Мой вопрос: Почему функция show()
необходима в слоте, но не в конструкторе?
PS. DocumentWindows
- только класс наследует QTextEdit
.