ボタンが押されたときに画像を表示する簡単なプログラムを書いています。私は Qt に非常に慣れていないため、問題が発生している場所を特定することができません。
class ImageSwitcher : public QWidget
{
Q_OBJECT
public:
ImageSwitcher();
QPushButton *leftButton;
QPushButton *rightButton;
~ImageSwitcher();
private slots:
void switchImages(QPixmap display);
private:
QLabel *canvas;
QPixmap *one;
QPixmap *two;
};
クラス宣言:
ImageSwitcher::ImageSwitcher (void) {
canvas = new QLabel;
one = new QPixmap;
two = new QPixmap;
leftButton = new QPushButton("&One");
rightButton = new QPushButton("&Two");
one->load("one.png");
two->load("two.png");
//Close the program if the images cannot be loaded.
//Load the images to the QPixmaps.
//Connect the left and right buttons.
QObject::connect(leftButton, SIGNAL(clicked()), canvas, SLOT(switchImages(*one)));
QObject::connect(rightButton, SIGNAL(clicked()), canvas, SLOT(switchImages(*two)));
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(canvas);
layout->addWidget(leftButton);
layout->addWidget(rightButton);
QWidget window;
window.setLayout(layout);
}
void ImageSwitcher::switchImages(QPixmap display) {
canvas->setPixmap(display);
}
ImageSwitcher::~ImageSwitcher (void) {
delete canvas;
delete one;
delete two;
delete leftButton;
delete rightButton;
}
そして最後に主な機能:
int main (int args, char **argv)
{
QApplication app(args, argv);
ImageSwitcher test;
test.show();
return app.exec();
}
私が抱えている最初の問題は、レイアウトが正しく設定されていないことです。次に、コマンド ラインは、switchImages() が 2 つの SLOT ではないことを警告します。奇妙なことに、同じ警告は表示されません。実行時にウィジェットが読み込まれないため、接続がまったく機能しているかどうかはよくわかりません。
どんな助けでも大歓迎です、ありがとう。