在Qt中显示隐藏小部件时调整窗口大小
我的对话框中有一个隐藏的小部件。当我显示它时,我希望对话框窗口相应地展开,并在选择隐藏它时再次缩小在Qt中显示隐藏小部件时调整窗口大小,qt,layout,window,Qt,Layout,Window,我的对话框中有一个隐藏的小部件。当我显示它时,我希望对话框窗口相应地展开,并在选择隐藏它时再次缩小 如何做到这一点?我试图理解Qt的布局功能,但我发现很难理解 不确定是否有内置解决方案,但这是我的手动解决方案: Dialog::Dialog(QWidget *parent) : QDialog(parent) { setupUi(this); connect(toolButton, SIGNAL(toggled(bool)), SLOT(onToolButton(boo
如何做到这一点?我试图理解Qt的布局功能,但我发现很难理解 不确定是否有内置解决方案,但这是我的手动解决方案:
Dialog::Dialog(QWidget *parent) :
QDialog(parent)
{
setupUi(this);
connect(toolButton, SIGNAL(toggled(bool)), SLOT(onToolButton(bool)));
onToolButton(false);
}
void Dialog::onToolButton(bool checked)
{
lineEdit->setVisible(checked);
int maxHeight = verticalLayout->contentsMargins().top()
+ verticalLayout->contentsMargins().bottom();
int itemsCount = 0;
for (int i = 0; i < verticalLayout->count(); ++i) {
QLayoutItem *item = verticalLayout->itemAt(i);
if (item->widget()) {
QWidget *w = item->widget();
if (w->isVisible()) {
maxHeight += w->geometry().height();
++itemsCount;
}
} else if (item->layout()) {
QLayout *l = item->layout();
maxHeight += l->geometry().height();
++itemsCount;
}
}
if (itemsCount > 1)
maxHeight += ((itemsCount - 1) * verticalLayout->spacing());
setMaximumHeight(maxHeight);
}
Dialog::Dialog(QWidget*父项):
QDialog(父级)
{
setupUi(本);
连接(工具按钮、信号(切换(bool))、插槽(工具按钮(bool));
按钮(假);
}
无效对话框::onToolButton(布尔选中)
{
lineEdit->setVisible(选中);
int maxHeight=verticalLayout->contentsMargins().top()
+垂直布局->内容边缘().bottom();
int itemsunt=0;
对于(int i=0;icount();+i){
QLayoutItem*item=verticalLayout->itemAt(i);
如果(项->小部件()){
QWidget*w=项目->小部件();
如果(w->isVisible()){
maxHeight+=w->geometry().height();
++项目调查;
}
}else if(项目->布局()){
QLayout*l=项目->布局();
maxHeight+=l->geometry().height();
++项目调查;
}
}
如果(itemsCount>1)
maxHeight+=((ItemScont-1)*垂直布局->间距();
设置最大高度(最大高度);
}
在显示/隐藏内容后,尝试对容器使用QWidget::adjustSize()。这可能会有所帮助:谢谢!工作起来很有魅力,而且是我遇到的最简单的解决办法。