setWindowFilePath 在 Qt 中根本不起作用

发布于 2024-10-10 16:07:03 字数 371 浏览 6 评论 0原文

为什么 setWindowFilePath 不起作用?插槽正在工作。窗口标题不会改变。 我的操作系统是 Windows 7,Qt 是用 wchar_t 支持编译的。

test::test(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
  ui.setupUi(this);
  QObject::connect(ui.pushButton, SIGNAL(clicked()), SLOT(Click()));
  setWindowTitle("Title");
}

void test::Click()
{
  setWindowFilePath("file.txt");
}

Why setWindowFilePath didn't work? Slot is working. The window title does not change.
My OS is Windows 7, Qt was compiled with wchar_t support.

test::test(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
  ui.setupUi(this);
  QObject::connect(ui.pushButton, SIGNAL(clicked()), SLOT(Click()));
  setWindowTitle("Title");
}

void test::Click()
{
  setWindowFilePath("file.txt");
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

习惯成性 2024-10-17 16:07:03

也许您的问题是您在使用setWindowFilePath()之前已经使用了setWindowTitle()。来自文档

如果在任何时候设置了窗口标题,则窗口标题优先,并将显示而不是文件路径字符串。

编辑:我刚刚尝试使用setWindowFilePath(),并注意到只有在调用show()之后调用它才会生效。由于文档中没有提到这一点,所以它闻起来像一个错误...

编辑:好吧,如果不使用setWindowTitle()或调用它就不起作用调用 show() 后的 setWindowFilePath() ,我不知道你的问题是什么。我做了一个工作示例,希望这可以帮助您找到问题:

#include <QApplication>
#include <QMainWindow>
#include <QPushButton>

class MyWindow : public QMainWindow
{
        Q_OBJECT

    public:

        MyWindow()
        {
            QPushButton* b = new QPushButton("Click me", this);
            connect(b, SIGNAL(clicked()), this, SLOT(click()));
        }

    private Q_SLOTS:

        void click()
        {
            setWindowFilePath("file.txt");
        }
};

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

    MyWindow w;
    w.show();

    return app.exec();
}

#include "main.moc"

Maybe your problem is that you already used setWindowTitle() before using setWindowFilePath(). From the docs:

If the window title is set at any point, then the window title takes precedence and will be shown instead of the file path string.

Edit: I just tried using setWindowFilePath() and noticed that it only takes effect if you call it after you call show(). Since this isn't mentioned in the docs, it smells like a bug...

Edit: Well, if it doesn't work without using setWindowTitle() or with calling setWindowFilePath() after calling show(), I don't know what your problem is. I've made a working example so I hope this helps you in tracking down your problem:

#include <QApplication>
#include <QMainWindow>
#include <QPushButton>

class MyWindow : public QMainWindow
{
        Q_OBJECT

    public:

        MyWindow()
        {
            QPushButton* b = new QPushButton("Click me", this);
            connect(b, SIGNAL(clicked()), this, SLOT(click()));
        }

    private Q_SLOTS:

        void click()
        {
            setWindowFilePath("file.txt");
        }
};

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

    MyWindow w;
    w.show();

    return app.exec();
}

#include "main.moc"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文