你好,我在Qt中更改窗口标题和中央小部件方面遇到了问题。这里是MainWindow:
class MainWindow : public QMainWindow
{
// (...)
QStackedWidget* widgets;
Quiz* widget1, *widget2;
}
有一个名为Quiz的类:
class Quiz : public QWidget
{
public slots:
void myClicked();
}
我希望在单击Quiz元素的按钮(与myClicked插槽连接)后更改MainWindow的标题。
void Quiz::myClicked()
{
static_cast<MainWindow>(parent).myFunction();
}
void MainWindow::myFunction()
{
widget2 = new Quiz(this,2);
widgets->addWidget(widget2);
std::cout<<"current wdgt: " << widgets->currentIndex() << std::endl; // shows: 0
widgets->setCurrentWidget(widget2);
std::cout<<"current wdgt " << widgets->currentIndex() << std::endl; // shows: 1
setWindowTitle("newTitle");
std::cout<<"Title is " << windowTitle().toStdString() << std::endl;
}
因此,widgets->currentIndex显示新小部件的索引,但我的窗口中没有任何更改。窗口标题也有同样的问题——windowTitle()方法返回新标题,但标题栏上的标题仍然是旧的。为什么呢? 如果我通过以下方式更改Quiz::myClicked中的标题:
parent->setWindowTitle("newTitle");
它可以工作!为什么它能够工作,真是奇怪?请帮忙。