Qt Designerを使ってみる その2
前回作った"setting_dialo.ui"をせっかくなので、GUIというディレクトリを作って、そこに入れました。
カレントにボコボコ置いてるのは、ちょっと気が引けますね。
で、この"setting_dialog.ui"から、この作ったダイアログを表示するためのソースコードを取り敢えず作ってみます。
えっと、「入門 Qt4 プログラミング」のP.30あたりを眺めてみますと、qmake -projectで.proを作って、qmake xxxx.proを実行しろと書いてありますね。
qmake -project [return]
永遠に終了しません…Ctrl-Cで強制終了。
qmake -project -norecursive [return]
終わりました。が、src.proとかいうファイルが出来てはいるものの、中身はさっぱり…です。".ui"ファイルも反映されていません。
# src.proというのは、カレントフォルダ名が反映されるみたいですね。カレントフォルダがtestならtest.proというファイル名になるらしいです。
早速、googleさんにお伺い。
http://doc.qt.digia.com/4.6/designer-using-a-ui-file.html
古いQt(4.6)のドキュメントが引っかかりました。なんか、このページの中程を見てゆくと、.proファイルの例が載っていますね。
TEMPLATE = app
FORMS = calculatorform.ui
SOURCES = main.cpp
このFORMSを.proに追加すれば、いいんじゃないですかね。
というわけで、手作業でbrynhildr.proをエディタで開いて以下を追加しました。
FORMS = GUI/setting_dialog.ui
さて、以下を実行します。
mmake brynhildr.pro [return]
お、Makefile.Debug/Makefile.Releaseが更新されています。
ui_setting_dialog.h というソースファイルもカレントに追加されてますね。これが自動生成されたダイアログ生成用のファイルのようです。
"setting_dialog.ui"というファイルからは"ui_setting_dialog.h"というファイルが生成されます。そういう規則みたいですね、ふーん。
中身は、こんな感じです。どこかで見たような文字列がありますね。翻訳のための準備も入ってそうです。
これを実際に使うには、もう少し手を加える必要があるらしいです。
カレントにボコボコ置いてるのは、ちょっと気が引けますね。
で、この"setting_dialog.ui"から、この作ったダイアログを表示するためのソースコードを取り敢えず作ってみます。
えっと、「入門 Qt4 プログラミング」のP.30あたりを眺めてみますと、qmake -projectで.proを作って、qmake xxxx.proを実行しろと書いてありますね。
qmake -project [return]
永遠に終了しません…Ctrl-Cで強制終了。
qmake -project -norecursive [return]
終わりました。が、src.proとかいうファイルが出来てはいるものの、中身はさっぱり…です。".ui"ファイルも反映されていません。
# src.proというのは、カレントフォルダ名が反映されるみたいですね。カレントフォルダがtestならtest.proというファイル名になるらしいです。
早速、googleさんにお伺い。
http://doc.qt.digia.com/4.6/designer-using-a-ui-file.html
古いQt(4.6)のドキュメントが引っかかりました。なんか、このページの中程を見てゆくと、.proファイルの例が載っていますね。
TEMPLATE = app
FORMS = calculatorform.ui
SOURCES = main.cpp
このFORMSを.proに追加すれば、いいんじゃないですかね。
というわけで、手作業でbrynhildr.proをエディタで開いて以下を追加しました。
FORMS = GUI/setting_dialog.ui
さて、以下を実行します。
mmake brynhildr.pro [return]
お、Makefile.Debug/Makefile.Releaseが更新されています。
ui_setting_dialog.h というソースファイルもカレントに追加されてますね。これが自動生成されたダイアログ生成用のファイルのようです。
"setting_dialog.ui"というファイルからは"ui_setting_dialog.h"というファイルが生成されます。そういう規則みたいですね、ふーん。
中身は、こんな感じです。どこかで見たような文字列がありますね。翻訳のための準備も入ってそうです。
これを実際に使うには、もう少し手を加える必要があるらしいです。
/********************************************************************************
** Form generated from reading UI file 'setting_dialog.ui'
**
** Created by: Qt User Interface Compiler version 5.3.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_SETTING_DIALOG_H
#define UI_SETTING_DIALOG_H
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QDialog>
#include <QtWidgets/QDialogButtonBox>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QSpinBox>
QT_BEGIN_NAMESPACE
class Ui_dialog
{
public:
QDialogButtonBox *buttonBox;
QLabel *label_hostname;
QLabel *label_hosttype;
QComboBox *comboBox;
QLabel *label_portno;
QSpinBox *spinBox;
QLabel *label_password;
QLineEdit *lineEdit_password;
QLineEdit *lineEdit_hostname;
void setupUi(QDialog *dialog)
{
if (dialog->objectName().isEmpty())
dialog->setObjectName(QStringLiteral("dialog"));
dialog->resize(400, 300);
buttonBox = new QDialogButtonBox(dialog);
buttonBox->setObjectName(QStringLiteral("buttonBox"));
buttonBox->setGeometry(QRect(10, 240, 341, 32));
buttonBox->setOrientation(Qt::Horizontal);
buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
label_hostname = new QLabel(dialog);
label_hostname->setObjectName(QStringLiteral("label_hostname"));
label_hostname->setGeometry(QRect(40, 30, 61, 16));
label_hosttype = new QLabel(dialog);
label_hosttype->setObjectName(QStringLiteral("label_hosttype"));
label_hosttype->setGeometry(QRect(40, 80, 50, 12));
comboBox = new QComboBox(dialog);
comboBox->setObjectName(QStringLiteral("comboBox"));
comboBox->setGeometry(QRect(190, 80, 161, 22));
label_portno = new QLabel(dialog);
label_portno->setObjectName(QStringLiteral("label_portno"));
label_portno->setGeometry(QRect(40, 130, 50, 12));
spinBox = new QSpinBox(dialog);
spinBox->setObjectName(QStringLiteral("spinBox"));
spinBox->setGeometry(QRect(190, 130, 161, 22));
label_password = new QLabel(dialog);
label_password->setObjectName(QStringLiteral("label_password"));
label_password->setGeometry(QRect(40, 200, 50, 12));
lineEdit_password = new QLineEdit(dialog);
lineEdit_password->setObjectName(QStringLiteral("lineEdit_password"));
lineEdit_password->setGeometry(QRect(190, 190, 161, 20));
lineEdit_hostname = new QLineEdit(dialog);
lineEdit_hostname->setObjectName(QStringLiteral("lineEdit_hostname"));
lineEdit_hostname->setGeometry(QRect(190, 30, 161, 20));
QWidget::setTabOrder(lineEdit_hostname, comboBox);
QWidget::setTabOrder(comboBox, spinBox);
QWidget::setTabOrder(spinBox, lineEdit_password);
QWidget::setTabOrder(lineEdit_password, buttonBox);
retranslateUi(dialog);
QObject::connect(buttonBox, SIGNAL(accepted()), dialog, SLOT(accept()));
QObject::connect(buttonBox, SIGNAL(rejected()), dialog, SLOT(reject()));
QMetaObject::connectSlotsByName(dialog);
} // setupUi
void retranslateUi(QDialog *dialog)
{
dialog->setWindowTitle(QApplication::translate("dialog", "Setting", 0));
label_hostname->setText(QApplication::translate("dialog", "HostName", 0));
label_hosttype->setText(QApplication::translate("dialog", "HostType", 0));
label_portno->setText(QApplication::translate("dialog", "PortNo", 0));
label_password->setText(QApplication::translate("dialog", "Password", 0));
} // retranslateUi
};
namespace Ui {
class dialog: public Ui_dialog {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_SETTING_DIALOG_H
« Qt Designerを使ってみる | トップページ | 暗号化についても考えてみる その6 »
コメント