setWindowFilePath вообще не работал в Qt - PullRequest
2 голосов
/ 07 января 2011

Почему 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");
}

1 Ответ

3 голосов
/ 07 января 2011

Возможно, ваша проблема в том, что вы уже использовали setWindowTitle() перед использованием setWindowFilePath().Из документов :

Если заголовок окна установлен в любой точке, тогда заголовок окна имеет приоритет и будет отображаться вместо строки пути к файлу.

Редактировать: Я только что попытался использовать setWindowFilePath() и заметил, что он вступает в силу, только если вы называете его после , когда вы звоните show().Поскольку это не упоминается в документации, оно пахнет ошибкой ...

Редактировать: Ну, если это не работает без использования setWindowTitle() или с вызовом setWindowFilePath() после звонка show(), я не знаю, в чем твоя проблема.Я сделал рабочий пример, поэтому я надеюсь, что это поможет вам отследить вашу проблему:

#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"
...