QT设置全屏showFullScreen()后,再打开子窗口,不能全屏
时间: 2024-05-07 16:22:30 浏览: 129
在Qt中,如果你想要在全屏模式下打开一个子窗口,可以考虑使用QWidget的setWindowState()函数来设置子窗口的状态。具体操作如下:
首先,你需要在主窗口中创建一个信号,用于接收子窗口的请求,代码如下:
```
// MyMainWindow.h
class MyMainWindow : public QMainWindow
{
Q_OBJECT
public:
MyMainWindow(QWidget *parent = nullptr);
signals:
void childWindowFullScreen(bool fullScreen);
private:
// ...
};
```
然后,在子窗口中,你需要捕捉用户的打开子窗口的动作,并发送一个信号给主窗口,告诉它是否需要全屏显示,代码如下:
```
// MyChildWindow.h
class MyChildWindow : public QDialog
{
Q_OBJECT
public:
MyChildWindow(QWidget *parent = nullptr);
private slots:
void onButtonClicked();
private:
// ...
};
// MyChildWindow.cpp
MyChildWindow::MyChildWindow(QWidget *parent)
: QDialog(parent)
{
// ...
}
void MyChildWindow::onButtonClicked()
{
emit childWindowFullScreen(true);
}
```
最后,在主窗口中,你需要接收子窗口的信号,并根据信号的参数来决定是否将子窗口设置为全屏模式,代码如下:
```
// MyMainWindow.cpp
MyMainWindow::MyMainWindow(QWidget *parent)
: QMainWindow(parent)
{
// ...
connect(this, &MyMainWindow::childWindowFullScreen, this, &MyMainWindow::onChildWindowFullScreen);
}
void MyMainWindow::onChildWindowFullScreen(bool fullScreen)
{
if (fullScreen) {
setWindowState(windowState() | Qt::WindowFullScreen);
}
}
```
通过这种方式,你就可以在全屏模式下打开一个子窗口,并且将它设置为全屏模式了。
阅读全文