QWizard与左侧的页面列表

时间:2012-02-16 13:21:29

标签: qt

我的项目中有一个Qt QWizard。我希望它有一个包含我的向导页面标题的页面列表。此外,我希望在此页面列表中以当前页面进行检查。

2 个答案:

答案 0 :(得分:1)

你必须实现一个小部件,左边有一个QListWidget,右边有一个QWizard。

列表小部件显示向导的所有可用页面的列表(使用QWizard::pageIds),每次更改页面(QWizard::currentIdChanged)时,您都会更新列表中每个项目的检查状态,使用QWizard::visitedPages,它会为您提供已访问过的网页的ID列表。

请记住,对于列表小部件中的项目,您必须手动设置标记Qt::ItemIsUserCheckable

  

QList QWizard :: visitedPages()const
  按照访问页面的顺序返回已访问页面的ID列表   按Back将当前页面再次标记为“未访问”。

答案 1 :(得分:0)

下面写的所有内容都与Qt 5.15有关。

首先,我没有像@Exa那样创建一个包含向导和列表的小部件。我只是使用方法QWizard::setSideWidget将列表小部件添加为向导的一面:

listPages = new QListWidget;
// Also added a flag that the list item cannot be selected
listPages->setSelectionMode(QAbstractItemView::SelectionMode::NoSelection);
setSideWidget(listPages);

其次,我为信号QWizard::currentIdChanged定义了一个插槽,可以在其中更改颜色以及更改列表视图的方式:

connect(this, &Wizard::currentIdChanged, this, &Wizard::OnPageIdChanged);
...
// To change listwidget states
void Wizard::OnPageIdChanged(int id)
{
// Do whatever you want with QListWidget
}