QtでQLabelに接続しようとすると、コードに赤い線で下線が引かれます。エラーメッセージのテキストは次のとおりです。Qt作成者:予想されるトークン ';' 'got') '
expected token ';' got ')'
私はconnect expected token ';' got ')'の助けを借りて、その問題を修正しようとしたが、それは助けにはなりませんでした。 mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QObject::connect(ui->desert, SIGNAL(toggled(true)), ui->label, SLOT(setPixmap(QPixmap("D:/Qt Projects/DZ3/Desert.jpeg"))));
QObject::connect(ui->koala, SIGNAL(toggled(true)), ui->label, SLOT(setPixmap(QPixmap("D:/Qt Projects/DZ3/Koala.jpeg"))));
QObject::connect(ui->penguins, SIGNAL(toggled(true)), ui->label, SLOT(setPixmap(QPixmap("D:/Qt Projects/DZ3/Penguins.jpeg"))));
}
MainWindow::~MainWindow()
{
delete ui;
}
砂漠、コアラやペンギンがQRadioButtonsあるが、ラベルはQLabelです。デザインタブの助けを借りてmainwindow.uiのプロジェクトに貼り付けました。そしてポストの始めのような問題があります。 下線文字列:
QObject::connect(ui->desert, SIGNAL(toggled(true)), ui->label, SLOT(setPixmap(QPixmap("D:/Qt Projects/DZ3/Desert.jpeg"))));
QObject::connect(ui->koala, SIGNAL(toggled(true)), ui->label, SLOT(setPixmap(QPixmap("D:/Qt Projects/DZ3/Koala.jpeg"))));
QObject::connect(ui->penguins, SIGNAL(toggled(true)), ui->label, SLOT(setPixmap(QPixmap("D:/Qt Projects/DZ3/Penguins.jpeg"))));
実は、コードはコンパイルしますが、トグルQRadioButtons後に何も起こりませんので、その後のラベルの変更はありません。 文字列ui->label->setPixmap(QPixmap("D:/Qt Projects/DZ3/Desert.jpeg"))
が動作します。 私のコードではどうすればよいですか?
文字列ベースのものではなく、信号/スロット接続用の「ポインタへのポインタ」構文を使用することをお勧めします。その後、実行時に面白いエラーや行方不明のアクションが発生することはありませんが、修正可能なコンパイル時エラーです。 –
'SLOT(setPixmap(QPixmap(" D:/ Qt Projects/DZ3/Desert.jpeg ")))'はあなたがしたいことを全くしません。 'SLOT'は内部を文字列に変換し、その文字列でメンバ関数を検索するマクロですが、' setPixmap(QPixmap( "D:/ Qt Projects/DZ3/Desert.jpeg")というメンバ関数はありません) '。多分、メンバ関数 'setPixmap(QPixmap)'があります。実行時エラーの代わりにコンパイル時エラーが発生した[新しいシグナルスロット構文](https://wiki.qt.io/New_Signal_Slot_Syntax)に切り替える必要があります。 – nwp
また、['QT_FATAL_WARNINGS'](https://doc.qt.io/qt-5/debug.html#warning-and-debugging-messages)を使用して、このようなエラーが発生した場合にプログラムが停止するようにしてくださいそれをデバッグする機会があります。 – nwp