拡張可能なQtダイアログアプリケーションを作成しようとしています。主なレイアウトはQVBoxLayout
です。上部には2つのビューとQPushButtonボタンがあります。ボタンをクリックすると、最初に隠されていた下部のウィジェットが展開されます。下部ウィジェットには、下部ウィジェットを折りたたみ(隠す)ことができる別のプッシュボタンがあります。ボトムウィジェットが折り畳まれたり折りたたまれたりすると、ダイアログサイズのサイズも変更されることが予想されます。拡張ダイアログのサイズを変更するにはどうすればよいですか?
しかし、何らかの理由で、ダイアログウィジェットのサイズは、下部ウィジェットが展開されている場合にのみ増加します。そして(200,100)に戻ることは決してありません。私が逃したものはありますか?
環境:Qt Creator 3.6.1; Based on Qt5.6.0 (MSVC2013 32bit); build on Mar 14 2016; revision d502727b2c
コード私が使用しています:あなたの助けを
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
QTreeView *tree = new QTreeView;
QTableView *table = new QTableView;
QPushButton *button_show = new QPushButton;
button_show->setText(tr("Show hidden panel"));
QHBoxLayout *layout_top = new QHBoxLayout;
layout_top->addWidget(tree);
layout_top->addWidget(table);
layout_top->addWidget(button_show);
QHBoxLayout *layout_bottom = new QHBoxLayout;
QTextEdit *editor = new QTextEdit;
QPushButton *button_hide = new QPushButton;
button_hide->setText(tr("Hide the bottom panel"));
g_pEditor = editor;
layout_bottom->addWidget(editor);
layout_bottom->addWidget(button_hide);
QWidget *panel = new QWidget;
panel->setLayout(layout_bottom);
QVBoxLayout *layout_main = new QVBoxLayout;
layout_main->addLayout(layout_top);
layout_main->addWidget(panel);
setLayout(layout_main);
panel->hide();
connect(button_show, &QPushButton::clicked
, panel
, [=]()
{
panel->setVisible(true);
button_show->setEnabled(false);
resize(200, 200);// not really working, the dialog size is able to increase without calling resize()
});
connect(button_hide, &QPushButton::clicked, panel, [=]()
{
panel->hide();
button_show->setEnabled(true);
resize(200,100);// does not shrink the dialog size*
});
resize(200,100);
}
感謝:)
ダイアログのサイズを手動で変更することは可能でしょうか?そうでなければ、メインレイアウトのサイズ制約をQLayout :: SetFixedSizeに設定することができます。ウィジェットを非表示または表示すると、レイアウトのサイズが自動的に変更されます。 –