0

私が達成しようとしていること:

QVBoxLayout を継承する 2 つのクラスを作成して、一連の異なるオブジェクトを使用して各クラスをセットアップします。

例: クラス 1 (QVBoxLayout を継承) には、予定を表示するための QLabels があり、それらのラベルはthis->addWidget(labels);

クラス 2 (QVBoxLayout を継承) には、予定を編集するための QLineEdits (など) があり、これらのオブジェクトも次のように設定されます。this->addWidget(lineedits);

this->setLayout(class1_object);QWidget クラスを作成してから、 andを呼び出してこれら 2 つのレイアウトを切り替えることは可能this->setLayout(class2_object);ですか?

または、ウィジェットでアクティブなオブジェクトの交換をどのように提案しますか (ビュー パーツの編集ボタンまたは編集パーツの保存ボタンをクリックしたとき)。

単に使用しobject->setShown(false);ますか?

4

1 に答える 1

1

IMO、こちらの方が使いやすいQTabWidgetです。2 つのタブQTabWidgetで を作成します。Tab1 にラベルを付けます。Tab2 に編集内容を入力します。「予定を編集する」のように Tab2 を呼び出します。currentChanged()次に、タブの切り替えをキャッチするスロットを使用します。

編集を簡単に保存する必要がある場合は、編集データを編集からラベルに、またはその逆にコピーするだけです。

保存にそれ以上のことが必要な場合、たとえば確認ダイアログが必要な場合は、何らかの条件が満たされるまで、ユーザーが Tab1 に戻ることを許可できます。

void MainWindow::on_tabWidget_currentChanged(int index)
{
    //if the user is trying to go back to Tab1 (where the labels are)...
    if(index == 0)
    {
         //...and if user didn't accept something, we just return him to the current tab
         //It's probably a good idea to tell him what went wrong, too :P
         if(!userAcceptedSaveDialog())
             ui.tabWidget.setCurrentIndex(1);        
    }
}
于 2012-07-31T13:54:34.137 に答える