「Qtの基礎 - ウインドウ」の版間の差分

ナビゲーションに移動 検索に移動
223行目: 223行目:
  {
  {
     widget->setTabOrder(widget, widget);
     widget->setTabOrder(widget, widget);
}
</syntaxhighlight>
<br><br>
== イベント ==
==== リサイズイベント ====
<code>resizeEvent</code>メソッドは、ウィジェットのサイズが変化した時に発生する。<br>
<syntaxhighlight lang="c++">
// Mainwindow.h
// ... 略
protected:
    void resizeEvent(QResizeEvent *event);
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
// Mainwindow.cpp
// ウインドウの幅と高さをデバッグ出力する
void MainWindow::resizeEvent(QResizeEvent *event)
{
    qDebug("Resize old=%dx%d,new=%dx%d", event->oldSize().width(), event->oldSize().height(), event->size().width(), event->size().height() );
}
</syntaxhighlight>
<br>
==== クローズイベント ====
<code>closeEvent</code>メソッドは、タイトルバーの×ボタンを押下した時やcloseメソッドを実行する時に発生する。<br>
<syntaxhighlight lang="c++">
// Mainwindow.h
// ...略
protected:
    void closeEvent(QCloseEvent *event);
private:
    bool checkQuit;
</syntaxhighlight>
<br>
コンストラクタでスイッチ(変数checkQuit)を初期化する。<br>
スイッチをtrueにする時、ウインドウを閉じる直前に確認メッセージのYes / Noメッセージボックスを表示する。<br>
Noを選択する場合、終了処理を行わずに元の画面に戻る。<br>
Yesを選択する場合、ウインドウを閉じて終了する。<br>
<syntaxhighlight lang="c++">
// Mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    checkQuit = true;
}
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
// Mainwindow.cpp
void MainWindow::closeEvent(QCloseEvent *event)
{
    if(checkQuit)
    {
      int ret = QMessageBox::question(this, tr("終了確認"), tr("終了しますか?"));
      if(ret == QMessageBox::No)
      {
          event->ignore();
      }
    }
    event->accept();
  }
  }
  </syntaxhighlight>
  </syntaxhighlight>

案内メニュー