2016-04-28 17 views
2

私は、2つのウィジェットbuttonWidgetとinfoWidgetを持つMainWindowを持っています。私はbuttonsWidget内のボタンをクリックした後にinfoWidgetを非表示にしようとしています(そして最終的に別のウィジェットを表示しています)。別のQWidgetからQWidgetを隠す

私が試してみた:

mainwindow.h

public: 
void hideInfo(); 

mainwindow.cpp

void MainWindow::hideInfo() 
{ 
ui->info->hide(); 
} 

buttonsWidget.cpp

void buttonsWidget::on_timingButton_clicked() 
{ 
MainWindow::hideInfo(); 

//Then will do something to show 'timingWidget'.. 

} 

感謝

答えて

1

これにはSignals and Slotsを使用する必要があります。

buttonsWidget.hにシグナルを追加します。

signals: 
    void hideInfoSignal(); 

主な機能では、ボタンの信号をメインウィンドウのhideInfo()メソッドに接続します。

私はこのマシンでQtを持っていないので、私はこれをテストしていませんが、それは可能な小さな変更でうまくいくはずです。エラーが表示されたら、私に知らせてください。また、信号とスロットのドキュメントをお読みください。

+0

ありがとうございます。最後に私はした: * buttonsWidget.h * 信号: void hideInfoSignal(); * infowidget.h * パブリックスロット: void hideInfo(); * buttonsWidget.cpp * on_timing_button_clicked(){ hideInfoSignal(); } * infoWidget.cpp * hideInfo(){ this-> hide; } * mainWindow.cpp * connect(ui-> buttons、SIGNAL(hideinfoSignal)、ui-> info、SLOT(hideInfo)) – easty

+0

素晴らしい!お役に立てて嬉しいです。 –

+0

いいですね!しかし、あなたが知っているように、ドキュメンテーションはシグナルを出す前に、シグナルを呼び出す前にキーワード "emit"を置くべきだと言います。このように: "hideInfoSignal()を放出"。この記事では、emitとsignalを呼び出す方法の違いについて説明しました:http://stackoverflow.com/questions/10160476/using-emit-vs-calling-a-signal-as-if-its-a-regular-function -in-qt –

関連する問題