изменение названия окон при переключении их с помощью QtSackedWidget

При использовании QtStackedWidget для переключения окон в большом проекте, это не учитывает » setWindowTitle «часть добавлена ​​в каждое окно, и даже для размера требуется только первое размер точный в QtStackedWidget декларация. Это странно. Любое уточнение, которое я здесь, чтобы прочитать.

  • Итак, мой вопрос:

    -позволяет ли QtStackedWidget изменять заголовок окна каждый раз, когда мы переключаем окно?

    -а как насчет размера это фиксированный или динамический?

0

Решение

Из документации 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);

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]