sasamoto
2014年5月16日 0時28分
お世話になります。
まだQtの勉強中なのでマト外れな質問をしていましたら
申し訳ございません。
MainWindow からボタンのクリックに応答して
QMessageBox::about() で簡単なポップアップの
about表示をしようと思っています。
ところが、exec() をするとポップアップするのではなく
MainWindowのサイズで表示されてしまい、ボックス
内の「OK」ボタンを押した後も、その画面でフリーズ
している状態になってしまいます。
repaint() を追加して様子を見てみましたが、やはり
フリーズされた状態に変わりはありません。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setMaximumSize(840,480);
this->resize(840,480);
this->setGeometry(0, 0, 840, 480);
grphFrame = new QFrame(this);
grphFrame->setGeometry(139, 39, 651, 431);
button1 = new QPushButton("Btn1", this);
button1->setGeometry(150,100,100,50);
button1->setFont(QFont("Times", 20, QFont::Bold));
connect(button1, SIGNAL(clicked()), this, SLOT(about1()));
}
void MainWindow::about1(void)
{
QMessageBox::about( this, "About this program",
"This is a program for tutorial.");
}
デスクトップで動作させると、意図する動作をします。
アルマジロの場合は何か気をつけなければならないことが
あるのでしょうか?
ご教授をいただけると大変助かります。
コメント
kazuo.asano
at_ohsawa
sasamoto
> Armadillo-840のシリアルコンソールから
> 当該のアプリケーションを実行したとき、
> 何かエラーメッセージ等は出力されているでしょうか?
アルマジロの実機に実行ファイルを転送して実行すると、コンソールには
エラーらしいものは表示されません。
-----
[root@armadillo840-0 (ttySC2) /home/ftp/pub] # QT_QPA_EGLFS_DISPLAY=1 ./test5
evdevtouch: Using device /dev/input/event0
min X:0 max X: 799
min Y:0 max Y: 479
min pressure: 0 max presure: 0
device name: st1232-touchscreen
Protocol type B (mtdev)
-----
上記のままです。
ヘッダーファイルには slots: は存在しています。
sasamoto
kazuo.asano
sazusです。
Armadillo-840 のLCDをそのまま使用されているなら
800x480(WxH)みたいですね。
codeを
- this->setMaximumSize(840,480);
- this->resize(840,480);
- this->setGeometry(0, 0, 840, 480);
+ this->setMaximumSize(800,480);
+ this->resize(800,480);
+ this->setGeometry(0, 0, 800, 480);
と修正して
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…
にあるように
# QT_QPA_EGLFS_DISPLAY=1 QT_QPA_EGLFS_WIDTH=800 QT_QPA_EGLFS_HEIGHT=480 ./test5
と実行してみてはどうでしょうか?
kazuo.asano
2014年5月16日 8時18分
こんにちは
sazus@日本Qtユーザー会の一味です。
hファイルにslotsが抜けていそうです。
コンソールからの起動で
Object::connect: No such slot MainWindow::about1() in ..
Object::connect: (receiver name: 'MainWindow')
ってlogがでているなら、お試しを
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected slots: // <- ここ slotsが抜けてませんか?
void about1();
private:
Ui::MainWindow *ui;
QFrame *grphFrame;
QPushButton *button1;
};
ではでは