QtDesinerでの作成そのニ
で、以下が本体のインターフェースとなるもの。
(ここでいうインターフェースは関数の仕様の意味)
#ifndef GOTOCELLDIALOG_H #define GOTOCELLDIALOG_H #include <QDialog> #include "ui_gotocelldialog.h" class GoToCellDialog : public QDialog ,private Ui::GoToCellDialog { Q_OBJECT public: GoToCellDialog(QWidget *parent=0); private slots: void on_lineEdit_textChanged(); }; #endif
class宣言な箇所では一番最後にセミコロンが必要!! ここ重要!!
#include <QtGui> #include "gotocelldialog.h" // コンストラクタ。受けとったparentをQDialogのparentに渡している。 GoToCellDialog::GoToCellDialog(QWidget *parent) : QDialog(parent) { // Ui::GoToCellDialogで実装されているsetupUiが選択され、実行される。 setupUi(this); // 正規表現クラス。perlと同じ書き方でほぼ行けるハズ。 QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}"); // thisを渡すことで、regExpの親オブジェクトを指定する => 親オブジェクトが破棄された時にいっしょに破棄される lineEdit->setValidator(new QRegExpValidator(regExp,this)); // OKボタンのクリックイベントに対応するハンドラ関数の設定 connect( okButton,SIGNAL(clicked()), this,SLOT(accept()) ); // 同じくcancelボタンのイベントハンドラ connect( cancelButton,SIGNAL(clicked()), this,SLOT(reject()) ); } // こちらは自動生成されたイベントハンドラの実装 // setupUiはon_オブジェクト名_シグナル名()という関数をそのシグナルが発生したときに呼び出されるように // 自動生成しているらしい void GoToCellDialog::on_lineEdit_textChanged() { okButton->setEnabled(lineEdit->hasAcceptableInput()); }
今日は一日ずーっとclass宣言の最後のセミコロンが無いことではまってました。気づくの遅すぎ、、、