gpt4 book ai didi

c++ - 在 Qt 4.4 中使用 QMDIArea。

转载 作者:行者123 更新时间:2023-11-30 02:13:25 24 4
gpt4 key购买 nike

我在 Qt 4.4 中使用 QMdiArea

如果创建了一个新项目,我将一些子窗口添加到QMdiArea。我想禁止用户在运行时关闭子窗口。仅当关闭整个应用程序或创建新项目时,才应关闭子窗口。

我该怎么做?

最佳答案

您需要定义自己的subWindow。创建 QMdiSubWindow 的子类并覆盖 closeEvent(QCloseEvent *closeEvent)。你可以通过参数来控制它。例如:

void ChildWindow::closeEvent(QCloseEvent *closeEvent)
{
if(/*condition C*/)
closeEvent->accept();
else
closeEvent->ignore(); // you can do something else, like
// writing a string in status bar ...
}

然后子类化 QMdiArea 并像这样重写 QMdiArea::closeAllSubWindows ():

class MainWindowArea : public QMdiArea
{
Q_OBJECT
public:
explicit MainWindowArea(QWidget *parent = 0);

signals:
void closeAllSubWindows();
public slots:

};
// Implementation:
MainWindowArea::closeAllSubWindows()
{
// set close condition (new project is creating, C = true)
foreach(QMdiSubWindow* sub,this->subWindowList())
{
(qobject_cast<ChildWindow*>(sub))->close();
}
}

您可能还需要覆盖您的 mdi 区域的 close 插槽。

关于c++ - 在 Qt 4.4 中使用 QMDIArea。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/315261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com