2012年6月11日月曜日

( Qt C++ )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.setDetailedText("Detailed Text!!\nThis is Detailed Text!!");//←-------ここで詳細設定!!!

    msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
    msgBox.setDefaultButton(QMessageBox::Save);
    msgBox.exec();
}


はい簡単ですね。setDetailedTextで設定しているだけです。これで詳細ボタンと詳細表示が設定されます。
QMessageBoxリファレンスへ)

実行すると以下のようになります。
ボタンを押すと


Show Details...というボタンが追加されているのでこれをクリックすると
 
無事詳細が表示されました。

以上です。次回アイコンの設定を予定しています。そこでQMessageBoxネタは終了予定です。