如何设置 QMainWindow 的 Windows 任务栏标题?

Posted

技术标签:

【中文标题】如何设置 QMainWindow 的 Windows 任务栏标题?【英文标题】:How to set Windows taskbar title of a QMainWindow? 【发布时间】:2013-10-16 16:34:41 【问题描述】:

出于好奇:我目前正在 Windows 7 上开发 Qt 应用程序。我想将窗口标题设置为在任务栏中显示。 setWindowTitle 不适用,因为我的 UI 是 QMainWindow,而不是 QWidget

我有一个带有标题的QString,但我无法设置它。我在 Qt Designer 中设置了 QMainWindow 标题,但这是静态的。我所达到的只是:

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)

  // ....
  QApplication::setApplicationDisplayName(qAppTitle);
  parent->setWindowTitle(qAppTitle);
  // ...

这会将我任务栏中的窗口标题变成:

[来自 Qt Designer 的标题] - [qAppTitle 变量]

糟透了。

想法?

【问题讨论】:

是什么让您认为 setWindowTitle 不适用?或者,更重要的是,QMainWindow 不是 QWidget? 因为 1) QMainWindow 不是 QWidget 并且 2) setWindowTitle 没有可见效果。 可以用setWindowTitle,你怎么用?请更新你的代码,把你的代码。 已编辑初始发布。 :-) 这行得通.. 除非你的意思是因为 W7 默认有图标? 【参考方案1】:

QMainWindow有一个和QWidget一样的setWindowTitle(因为是一个),看这个问题:

How to set QMainWindow title

因此解决方案是:

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)

  setWindowTitle("Hello world");

http://doc.qt.digia.com/4.7/qwidget.html#windowTitle-prop

还有

http://qt-project.org/doc/qt-5.0/qtwidgets/qmainwindow.html

"QMainWindow Class

The QMainWindow class provides a main application window. More...
#include <QMainWindow>
Inherits: QWidget."

【讨论】:

(更改后,请参阅之前的讨论:)谢谢!解决了。​​ setApplicationDisplayName 似乎是我系统上更改窗口装饰标题的唯一方法。 setWindowTitle 让我在死胡同里跑了好几个小时。

以上是关于如何设置 QMainWindow 的 Windows 任务栏标题?的主要内容,如果未能解决你的问题,请参考以下文章

QMainWindow 设置 frameSize

如何使背景PNG图像Alpha通道在QMainWindow中显示为透明

如何在不影响 QDockWidget 的情况下更改 QMainWindow 分隔符的宽度

Qt:: 如何消除 qmainwindow 中小部件和工具栏之间的间隙

QMainWindow :根据屏幕大小设置小部件大小

Qt 中 QMainWindow 上的另一个窗口