2010-10-29 153 views

回答

21

我认为你需要的唯一东西就是某种父占位符小部件。如果您创建没有父级的小部件,它将被视为顶级窗口。但是,如果您将其创建为顶级窗口的子项,则它将被视为子窗口,并且本身不会获取任务栏条目。父窗口,而另一方面,也不会因为你永远不设置明显的得到一个任务栏条目:这里此代码的工作对我来说:

class MyWindowWidget : public QWidget 
{ 
public: 
    MyWindowWidget(QWidget *parent) 
     : QWidget(parent, Qt::Dialog) 
    { 

    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QMainWindow window; 

    MyWindowWidget widget(&window); 
    widget.show(); 

    return app.exec(); 
} 

没有任务栏条目曾经表示,如果这是要你意。

+1

我正在面对这与一个应用程序和阅读后,我意识到问题是有人提交一个对象创建与此对象。这对我来说是个bug。我删除了'this',并且应用程序完美工作,即任务栏条目返回。谢谢。 – Yash 2016-04-06 13:47:03

5

如果要显示/隐藏小部件,而不在任务栏上显示它,可以检查该小部件的窗口标志。我不是100%肯定的,但我想我用过Qt::Dialog | Qt::ToolQt::CustomizeWindowHint来达到这个目的,但是我的窗户也没有完全装饰。另一件你可能会记住的事情是你的应用程序退出策略。关闭/隐藏最后的顶级窗口通常会退出你的应用程序,所以也许你需要拨打QApplication::setQuitOnLastWindowClosed(false)来防止...

+1

'Qt :: Tool'是防止任务栏条目的相关标志。 – ens 2015-11-08 19:04:02

+0

你可以给出示例代码。 – GeneCode 2017-09-18 01:11:59

+0

Nvm明白了:this-> setWindowFlags(Qt :: tool); – GeneCode 2017-09-18 01:14:11

0

Python代码实现这一目标:

from PyQt5.QtCore import * 
from PyQt5.QtWidgets import * 

class MainWindow(QWidget): 
    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent, Qt.Tool) 

window = MainWindow() 
window.show() 
3

刚刚成立的Qt ::子窗口标志部件。

+0

这绝对是最简单的答案。适用于Qt5。 – TheSHEEEP 2017-02-21 08:12:32

+0

如果你的窗口没有框架,这是一个很好的解决方案。如果是这样,那么你不会有默认的窗口按钮(关闭,最大化,最小化)。 – Szpaqn 2017-08-18 14:00:22

+0

我在哪里放这个代码?你能举出更详细的例子吗? – GeneCode 2017-09-18 01:03:15