1

形状を変更するダイアログ ボックスを使用しようとしていました。つまり、ボタンをクリックすると、ダイアログ ボックスのサイズが大きくなり、詳細が追加されます。そのために、ボタンに次のコードを書きました。

QObject::connect(ui->moreButton, SIGNAL(toggled(bool)), 
    ui->sgroupBox, SLOT(setVisible(bool)));

しかし、私のダイアログボックスには何の変化もありません。この場合、どうすればよいでしょうか。

hide() 関数を使用してグリッドに配置することで、余分な詳細を非表示にしました。余分な詳細は隠されていますが、ウィジェットのサイズは変更されていません。

解決策を教えてください

4

1 に答える 1

0

あなたの質問を正しく理解できた場合、ユーザー インターフェイスのボタンをクリックした後に QDialog ボックスのサイズを変更しようとしていますか?

QDialog は QWidget を継承するため、QWidget::resize(int width, int height) メソッドを呼び出すことができます。

したがって、ボタンを押したときに QDialog を大きくするには、toggled(bool) シグナルをスロットに接続し、サイズ変更を呼び出すだけです。

すなわち。

QObject::connect(ui->moreButton, SIGNAL(toggled(bool)), whateverClassManagesYourQDialog, onButtonToggled(bool));

次に、QDialog を管理するクラスにこのスロットを実装します。

// This is a slot in your class which implements QDialog 
whateverClassManagesYourQDialog::onButtonToggled(bool toggledState){
    ui->sGroupBox.setVisible(toggledState); // This will show or hide sGroupBox
    resize(someIncrement,someIncrement); // This will grow your QDialog
}
于 2012-09-19T06:20:05.840 に答える