13,029
回編集
| 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> | ||