はい。どうも。それでは真面目に粛々と表題の件やっていきます。
QMessageBoxの基本的な使い方は前の記事を参考にしてください。
再度説明はしません。今回はQMessageBoxに様々なボタンを配置してみます。
いつものようにQtCreaterの使用を前提とします。(QtCreaterなどの使い方は ”Qtをはじめよう" を見てください。)
またMainWindowにはbottonを一つ配置済みとします。
それではコードを
(mainwindow.h)
#include <QMainWindow>
#include <QMessageBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();//コネクトしません。
private:
Ui::MainWindow *ui;
};
特に難しいところはありません。<QMessageBox>は必ずインクルードしておいてください。
on_pushButton_clicked()はプッシュボタンクリックシグナルを補足します。Connectはしていませんがこれで動作します。(これがわからない方は”Qtをはじめよう"の「第16回:GUI デザイナ上でスロットを...」の記事の説明を見てください。)
(mainwindow.cpp)
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QMessageBox msgBox;
msgBox.setText("Hello World!! This is MessageBox!!");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
msgBox.exec();
}
はい簡単ですね。setStandardButtonsでそれぞれorでボタンを設定しています。setDefaultButtonによりSaveボタンを初期フォーカスを当てています。あとは前回と同じです。(ちなみにStandardButtonの種類は他にもあります。詳しくはコチラ)
(QMessageBoxリファレンスへ)
実行すると以下のようになります。
以上です。次回はどのボタンが押されたかの識別についてやります。

