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

slot 属于GUI类实例,不属于ui.Image,因此您应该在调用this中用作目标。connect

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

插槽必须在“插槽”部分下声明:

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