Qt 为隐藏的QWidget调用show()后移动QLabel
我有一个QDialog窗口,其中显示一个输入文本的栏,还有两个按钮(一个用于接受,一个用于取消),以及顶部的指示“请提供ID…”。同时,我有一个默认情况下隐藏的警告/错误消息 窗口是这样的: 问题是,当我调用Qt 为隐藏的QWidget调用show()后移动QLabel,qt,qt5,qwidget,qlabel,Qt,Qt5,Qwidget,Qlabel,我有一个QDialog窗口,其中显示一个输入文本的栏,还有两个按钮(一个用于接受,一个用于取消),以及顶部的指示“请提供ID…”。同时,我有一个默认情况下隐藏的警告/错误消息 窗口是这样的: 问题是,当我调用show()显示警告时,它不会重新缩放窗口,因此警告显示在输入栏的其余部分的顶部。如下所示: 我一直在查看一些属性,例如sizePolicy,甚至使用adjustSize,但我无法使例如top指令在显示警告时向上移动一点,这样它们就不会堆叠在一起 我认为应该有一个简单的方法来管理这个问题
show()
显示警告时,它不会重新缩放窗口,因此警告显示在输入栏的其余部分的顶部。如下所示:
我一直在查看一些属性,例如sizePolicy
,甚至使用adjustSize
,但我无法使例如top指令在显示警告时向上移动一点,这样它们就不会堆叠在一起
我认为应该有一个简单的方法来管理这个问题,有人能指出我遗漏了什么或者我应该改变什么吗
我使用的Qt版本是Qt5.4,所有元素都必须在布局中。警告尚未添加到布局中,因此当显示警告时,它将保留其原始位置 作为参考,该对话框可大致编写如下:
class IdDialog : public QDialog {
QGridLayout m_layout{this};
QLabel m_header{tr("Enter an ID")};
QLabel m_warning{tr("<font color=\"red\">Subject not found.</font>")};
QLineEdit m_subject;
QDialogButtonBox m_box;
QPushButton *const m_disconnect = m_box.addButton(tr("Disconnect"), QDialogButtonBox::RejectRole);
QPushButton *const m_confirm = m_box.addButton(tr("Confirm"), QDialogButtonBox::AcceptRole);
public:
IdDialog(QWidget *parent = nullptr) : QDialog(parent)
{
m_layout.addWidget(0, 0, &m_header);
m_layout.addWidget(1, 0, &m_warning);
m_layout.addWidget(2, 0, &m_subject);
m_layout.addWidget(3, 0, &m_box);
m_warning.hide();
// connect signals here, etc.
}
};
class-id对话框:公共QDialog{
QGridLayout m_布局{this};
QLabel m_头{tr(“输入ID”)};
QLabel m_警告{tr(“未找到受试者”)};
QLineEdit m_主题;
QDialogButtonBox m_box;
QPushButton*const m_disconnect=m_box.addButton(tr(“disconnect”),QDialogButtonBox::RejectRole);
QPushButton*const m_confirm=m_box.addButton(tr(“confirm”),QDialogButtonBox::AcceptRole);
公众:
IdDialog(QWidget*parent=nullptr):QDialog(parent)
{
m_layout.addWidget(0、0和m_头);
m_layout.addWidget(1、0和m_警告);
m_layout.addWidget(2、0和m_主题);
m_layout.addWidget(3、0和m_框);
m_warning.hide();
//在这里连接信号等。
}
};
对话框是否使用任何布局?标签是否在该布局中?请提供