Qt6 和 setWindowIcon() 函数

问题描述 投票:0回答:1

我用QtCreator13.0.0和Qt6.04创建了一个简单的项目。 对于我的应用程序,我使用 QtCreator 的“创建项目”选项,并选择“Qt 应用程序”->“Qt Widgets 应用程序”,将其命名为“mytest”。 在 QtCreator 创建的“mytest”文件夹中,我复制了一个 icon.png 文件,其中包含一个 48x48 像素的图像。 我将行 setWindowIcon(QIcon("./icon.png")); 添加到 MainWindow 源中:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowTitle("mytitle");
    setWindowIcon(QIcon("./icon.png"));
}

MainWindow::~MainWindow()
{
    delete ui;
}

为了编译程序,我没有使用qtcreator,但我在“mytest”目录中打开了一个konsole,然后输入:

qmake6

因此:

make

最后:

./mytest

我希望在窗口图标中看到图像,就像我的所有程序中发生的那样。但这并没有发生:默认的 QtCreator 图标继续显示。

我尝试使用另一个 png 图像,然后尝试将图像插入到资源文件中并尝试从那里加载它们,但没有成功。

这种使用 setWindowIcon 的方法在过去一直有效,并且仍然包含在 Qt6 文档中。但这似乎不起作用。有想法吗?

编辑:我已经尝试在 setWindowIcon() 中加载图标图像:

  1. 从本地目录,使用“./icon.png”
  2. 从本地目录,使用完整路径
  3. 来自资源文件中报告的资源,我之前将图像放在“images”前缀中,并带有“:/images/icon.png”

EDIT2:我尝试将以下行添加到代码中:

QPixmap p=windowIcon().pixmap(48,48); // 48x48 is the size of my icon
p.save("/home/happy/aaa.png");

嗯,保存的文件“/home/felice/aaa.png”是我的图标的精确副本。所以setWindowIcon()函数实际上加载了图标,但没有显示。我很困惑。

c++ linux qt-creator qt6
1个回答
0
投票

看来问题是由 Wayland 产生的。 QT bugreports 中有一些关于此问题的类似 bug 报告。 请参阅这里

问候。

© www.soinside.com 2019 - 2024. All rights reserved.