2012年7月11日水曜日

( Qt C++ )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.setIcon(QMessageBox::Warning);//ここでアイコン設定!!!!!!

    msgBox.exec();//表示
}
はい簡単ですね。msgBox.setIconでWarningアイコンをセットしています。 あらかじめ用意されているのは以下のとおりです。
 
QMessageBox::Question4an icon indicating that the message is asking a question.
QMessageBox::Information1an icon indicating that the message is nothing out of the ordinary.
QMessageBox::Warning2an icon indicating that the message is a warning, but can be dealt with.
QMessageBox::Critical3an icon indicating that the message represents a critical problem.
また、独自のアイコンをセットしたい場合はsetIconPixmap()で設定できるそうです。 (QMessageBoxリファレンス) 実行すると以下のようになります。
 
ボタンを押すと
アイコン付きで表示されました。
以上です。