はい。どうも。それでは真面目に粛々と表題の件やっていきます。
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リファレンスへ)
実行すると以下のようになります。
以上です。次回はどのボタンが押されたかの識別についてやります。