Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 为隐藏的QWidget调用show()后移动QLabel_Qt_Qt5_Qwidget_Qlabel - Fatal编程技术网

Qt 为隐藏的QWidget调用show()后移动QLabel

Qt 为隐藏的QWidget调用show()后移动QLabel,qt,qt5,qwidget,qlabel,Qt,Qt5,Qwidget,Qlabel,我有一个QDialog窗口,其中显示一个输入文本的栏,还有两个按钮(一个用于接受,一个用于取消),以及顶部的指示“请提供ID…”。同时,我有一个默认情况下隐藏的警告/错误消息 窗口是这样的: 问题是,当我调用show()显示警告时,它不会重新缩放窗口,因此警告显示在输入栏的其余部分的顶部。如下所示: 我一直在查看一些属性,例如sizePolicy,甚至使用adjustSize,但我无法使例如top指令在显示警告时向上移动一点,这样它们就不会堆叠在一起 我认为应该有一个简单的方法来管理这个问题

我有一个QDialog窗口,其中显示一个输入文本的栏,还有两个按钮(一个用于接受,一个用于取消),以及顶部的指示“请提供ID…”。同时,我有一个默认情况下隐藏的警告/错误消息

窗口是这样的:

问题是,当我调用
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();
//在这里连接信号等。
}
};

对话框是否使用任何布局?标签是否在该布局中?请提供