1

Visual Studio 2010のQT統合デザイナーを使用して、単純なGUIを設計しています。やりたいことは次のとおりです。[更新]というボタンをクリックし、それを使用して表示される画像を変更します。更新を押してシグナルをトリガーできることを確認し、テキストフィールドのスロットを使用してクリアしました。しかし、Signal/Slotメソッドを使用して表示される画像を変更できないようです...。

関連するコードスニペット(GUI.cpp)は次のとおりです。

 void GUI::changeImage() 
 {
     ui.Image->updatesEnabled();
     ui.Image->setPixmap(QPixmap("D:\\Documents\ and\ Settings\\Image.jpg"));
     ui.Image->update();
 }

GUI::GUI(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);

    connect(ui.updateButton, SIGNAL(clicked()), ui.textField, SLOT (clear()) );
    connect(ui.updateButton, SIGNAL(clicked()), ui.Image, SLOT ( changeImage() ) );
}

GUI::~GUI()
{

}

私は何か間違ったことをしていますか?

編集:gui.hのコード

#include <QtGui/QMainWindow>
#include "ui_gui.h"

class GUI : public QMainWindow
{
    Q_OBJECT

public:
    GUI(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~GUI();

private:
    Ui::GUIClass ui;
    void changeImage() ;
};
4

1 に答える 1

3

GUIスロットは、ではなくクラスインスタンスに属しているため、呼び出しのターゲットとしてui.Image使用する必要があります。thisconnect

connect(ui.updateButton, SIGNAL(clicked()), this, SLOT ( changeImage() ) );

スロットは「スロット」セクションで宣言する必要があります。

private slots:
    void changeImage() ;
于 2012-09-18T19:49:21.993 に答える