Yury
Yury

Reputation: 1259

setWindowFilePath didn't work in Qt at all

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");
}

Upvotes: 2

Views: 868

Answers (1)

mtvec
mtvec

Reputation: 18326

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"

Upvotes: 3

Related Questions