我的项目中有一个Qt QWizard。我希望它有一个包含我的向导页面标题的页面列表。此外,我希望在此页面列表中以当前页面进行检查。
答案 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
}