qt方案不置顶
时间: 2023-07-13 11:11:41 浏览: 103
如果不想使用置顶方案,Qt 提供了一种实现多个窗口独立在任务栏显示的方案。具体的做法是:
1. 在每个窗口的构造函数中设置窗口属性,将窗口设置为 Qt::Tool 窗口。
```cpp
setWindowFlags(Qt::Tool);
```
2. 在每个窗口的 show() 函数中设置窗口属性,将窗口设置为 Qt::WindowType_Mask 属性。
```cpp
void MainWindow::show()
{
setWindowFlags(Qt::Window | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint | Qt::MSWindowsFixedSizeDialogHint | Qt::FramelessWindowHint | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowType_Mask);
QMainWindow::show();
}
```
这样做后,每个窗口将会以独立的按钮显示在任务栏中,而不会和其他窗口合并在一起,并且不会设置为置顶窗口。需要注意的是,这种做法可能会影响窗口的层叠顺序,需要根据实际情况进行调整。
相关问题
qt对话框设置置顶后show一次,让后最小化,再show不会显示
您可以尝试在show之前调用raise()方法将对话框置顶,然后在最小化之后再次调用show()方法即可显示。以下是示例代码:
```python
dialog = QtWidgets.QDialog()
dialog.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # 设置置顶
dialog.show()
dialog.showMinimized()
dialog.show()
```
请注意,这只是一种可能的解决方案,具体取决于您的代码实现方式。
不使用置顶方案,还有其他方案?
除了使用置顶方案,还有一种方式可以实现多个窗口独立在任务栏显示。具体的做法是:
1. 在每个窗口的构造函数中设置窗口样式,将窗口设置为 WS_EX_TOOLWINDOW 样式。
```cpp
setWindowFlags(Qt::Window | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | Qt::CustomizeWindowHint | Qt::WindowFullscreenButtonHint | Qt::MSWindowsFixedSizeDialogHint | Qt::FramelessWindowHint | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowType_Mask);
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint | WS_EX_TOOLWINDOW);
```
2. 设置窗口的属性,将窗口设置为非顶层窗口。
```cpp
setWindowFlags(Qt::SubWindow);
```
这样做后,每个窗口将会以独立的按钮显示在任务栏中,而不会和其他窗口合并在一起。需要注意的是,这种做法可能会影响窗口的层叠顺序,需要根据实际情况进行调整。
阅读全文