При использовании QtStackedWidget для переключения окон в большом проекте, это не учитывает » setWindowTitle «часть добавлена в каждое окно, и даже для размера требуется только первое размер точный в QtStackedWidget декларация. Это странно. Любое уточнение, которое я здесь, чтобы прочитать.
Итак, мой вопрос:
-позволяет ли QtStackedWidget изменять заголовок окна каждый раз, когда мы переключаем окно?
-а как насчет размера это фиксированный или динамический?
Из документации Qt setWindowTitle
Это свойство имеет смысл только для виджетов верхнего уровня, таких как окна и диалоги. Если заголовок не был установлен, заголовок основан на windowFilePath. Если ни один из них не установлен, тогда заголовок является пустой строкой.
Вы можете подключить QStackedWidget
сигналы к QMainWindow
Вот рабочий пример:
#include <QPushButton>
#include <QHBoxLayout>
#include <QLabel>
#include <QStackedWidget>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
QWidget * poCentral = new QWidget(this);
QVBoxLayout * poVLayout = new QVBoxLayout;
QHBoxLayout * poHBtnLayout = new QHBoxLayout;
QStackedWidget * poMyStackedWidget = new QStackedWidget(this);
QPushButton * poNextPage = new QPushButton("Next page", this);
this->setWindowTitle("Page: 0");
// switch stacked pages
connect(poNextPage, &QPushButton::clicked,
[=]()
{
int iPageIndex = poMyStackedWidget->currentIndex() + 1;
if (iPageIndex >= poMyStackedWidget->count())
{
poMyStackedWidget->setCurrentIndex(0);
}
else
{
poMyStackedWidget->setCurrentIndex(iPageIndex);
}
// set window title
poMyStackedWidget->setWindowTitle(QString("Page: %1").arg(poMyStackedWidget->currentIndex()));
});
// Connect the signlas so the main window will display the title.
connect(poMyStackedWidget, &QStackedWidget::windowTitleChanged,
this, &MainWindow::setWindowTitle);
// UI layout
poHBtnLayout->addWidget(poNextPage);
poVLayout->addLayout(poHBtnLayout);
poVLayout->addWidget(poMyStackedWidget);
poCentral->setLayout(poVLayout);
// Add dumy pages
poMyStackedWidget->insertWidget(0,new QLabel("First page", this));
poMyStackedWidget->insertWidget(1,new QLabel("Second page", this));
poMyStackedWidget->insertWidget(2,new QLabel("third page", this));
this->setCentralWidget(poCentral);
}
Других решений пока нет …