我的 QMdiSubWindows 有两个问题。目前可以将子窗口移动到主窗口的菜单/工具栏下方,因为我无法再到达子窗口的窗口标志,所以它会丢失。另一个问题是窗口标志在我最大化子窗口后消失了。
目前我的代码如下所示:
//mainwindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget * parent = nullptr);
protected:
void
closeEvent(QCloseEvent * event);
private slots:
void
newSignalTable();
private:
void
createMenuBar();
QMdiArea * m_mdiArea;
};
//mainwindow.cpp
MainWindow::MainWindow(QWidget * parent) : QMainWindow(parent), m_mdiArea(new QMdiArea)
{
m_mdiArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
m_mdiArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
setCentralWidget(m_mdiArea);
createMenuBar();
setWindowTitle(tr("%1 (Multiple Models)[ *]").arg(QApplication::applicationName()));
}
void
MainWindow::newSignalTable()
{
QMdiSubWindow * tableSubWindow = new QMdiSubWindow;
auto * tableWidget = new TableWidget(m_driveComLibrary);
QWidget * newWidget = tableWidget->createTable();
tableSubWindow->setWidget(newWidget);
tableSubWindow->setAttribute(Qt::WA_DeleteOnClose);
tableSubWindow->setMinimumSize(QSize(320, 300));
tableSubWindow->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
m_mdiArea->addSubWindow(tableSubWindow);
tableSubWindow->show();
}
void
MainWindow::createMenuBar()
{
QAction * newTableAction = new QAction(tr("&New Signal Table"), this);
newTableAction->setShortcuts(QKeySequence::New);
newTableAction->setStatusTip("Create a new signal table");
connect(newTableAction, &QAction::triggered, this, &MainWindow::newSignalTable);
auto fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction(newTableAction);
fileMenu->addSeparator();
}
有谁知道如何限制子窗口的区域以及如何在最大化子窗口后获得窗口标志的正确表示?