2011-07-20 3 views
0

Qtクリエイターには初めてです。私は3ページの積み重なったウィジェットを持っています。また、メニューバーにはopen \\ createが含まれています。 QWidgetには2ページあります。最初のページとOpenを同期させ、スタックされたウィジェットの2番目のページをメニューバーから作成するにはどうすればいいですか?QWidgetsとメニューバーを同期させる方法は?

私は書き込みました:ui->stackedWidget->show();しかし、それは開いて作成するために2番目のページを印刷しています。

助けが必要です。

答えて

0

MainWindowクラスに2つのスロットを宣言する必要があります。例えば:あなたのメイン・ウィンドウコンストラクタ(あなたのメニューアクションがactionOpenactionCreateあると仮定した場合)で次に

class MainWindow : public QMainWindow 
    { 
    ... 
public slots: 
    void slotOpen() ; 
    void slotCreate() ; 
    ... 
    } ; 

、:

connect (ui -> actionOpen, SIGNAL(triggered()), SLOT(slotOpen())) ; 
connect (ui -> actionCreate, SIGNAL(triggered()), SLOT(slotCreate())) ; 

スロット機能:

void MainWindow::slotOpen() 
    { 
    ui -> stackedWidget -> setCurrentIndex(0) ; 
    } 

void MainWindow::slotCreate() 
    { 
    ui -> stackedWidget -> setCurrentIndex(1) ; 
    } 
-1

QStackedWidgetスロットsetCurrentIndexにメニューアクションを接続できます。これにより、メニューをクリックするときに正しいウィジェットを表示することができます。

+0

動作しません。 connect()コールでは、SLOTを特定のパラメータ値で呼び出すように割り当てることはできません。 – Xenakios

+0

-1。 Xenakiosが言ったこと。また 'SIGNAL(triggered())'でなく 'SIGNAL(triggered) 'でなければなりません。ああ、括弧の不一致の問題もあります。 – TonyK

+0

私はチェックするIDEなしでそれを書いた...私はsetCurrentIndexスロットが存在することを伝えるだろう...だから私はサンプルを削除します –

関連する問題