答案 0 :(得分:0)
我能想到的两个选择
StackedWidget是一个包含多个小部件的容器,但一次仅显示一个。您可以使用.setCurrentIndex(int index)
和.setCurrentWidget(QWidget*)
设置哪一个可见。
这基本上是您要执行的操作,除了默认情况下,它会保持与最高的小部件一样高,即使有间隔(在屏幕截图中也可以看到)。
可以手动强制执行此操作,或者甚至可以创建自己的窗口小部件来执行此操作(https://www.qtcentre.org/threads/28514-How-can-i-achieve-an-auto-resizing-QStackedWidget),但是它的易用性有所降低。
第二个选项(实际上是最基本的)是创建用作容器的不同Widget,并且每当按下按钮时都将切换(.show()
/ .hide
)。如果您正在寻找实现它的最简单方法,甚至可以从QtCreator的设计器中完成。
checkable
和exclusive
(可能与您一样)clicked(bool checked)
或toggled(bool checked)
信号show
/ hide
仅显示一个。瞧!MyWidget:MyWidget(...)
{
connect(ui->vertexButton, &QPushButton::clicked, this, &MyWidget::onButtonClicked);
}
void MyWidget::onButtonClicked(bool checked) {
button = sender();
if (button == ui->vertexButton) {
ui->vertexContent->show();
ui->edgeContent->hide();
} else if ...
}
免责声明:我没有尝试编译上面的代码