我想更改主菜单以在QMdiArea为空时删除一些项目,所以我尝试使用:
connect(mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)), this, SLOT(on_mdiArea_changed()));
捕获信号,但是我发现它不能捕获空信号,那么如何解决此问题? THX
答案 0 :(得分:-1)
我假设您正在使用Qt4。
标题
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class QMdiArea;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
QMdiArea *mdiArea{};
};
#endif // MAINWINDOW_H
Cpp
#include "mainwindow.h"
#include <QMdiArea>
#include <QMdiSubWindow>
#include <QMetaObject>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
mdiArea = new QMdiArea;
setCentralWidget(mdiArea);
auto w = new QMdiSubWindow;
connect(w,&QMdiSubWindow::windowStateChanged,[=](){
if(w->windowState() == Qt::WindowNoState){
mdiArea->removeSubWindow(w);
if(mdiArea->subWindowList().size() == 0){
qDebug() << "modify the menu";
}
}
});
mdiArea->addSubWindow(w);
}