在Qt中更改标签

lie*_*ewl 4 c++ qt

我正在尝试制作一个由按钮和标签组成的简单程序.按下按钮时,它应该将标签文本更改为程序内QString变量中的任何内容.到目前为止,这是我的代码:

这是我的widget.h文件:

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::WidgetClass *ui;
    QString test;

private slots:
    void myclicked();
};
Run Code Online (Sandbox Code Playgroud)

这是Widget类的实现:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent), ui(new Ui::WidgetClass)
{
    ui->setupUi(this);
    test = "hello world";
    connect(ui->pushButton, SIGNAL(clicked()), ui->label, SLOT(myclicked()));
}

Widget::~Widget()
{
    delete ui;
}

void Widget::myclicked(){
    ui->label->setText(test);
}
Run Code Online (Sandbox Code Playgroud)

它运行但单击按钮时没有任何反应.我究竟做错了什么?

编辑:在我使用它之后,标签中的文本大于标签本身,因此文本被剪切了.我通过添加ui->label->adjustSize()myclicked()的定义来修复它.

ere*_*der 9

您正在将信号连接到错误的对象.myclicked()不是QLabel的一个插槽,它是你的Widget类的一个插槽.连接字符串应为:

connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(myclicked()));
Run Code Online (Sandbox Code Playgroud)

看一下程序的控制台输出.应该有一条错误消息说:

将clicked()连接到myclicked()时出错:QLabel中没有定义此类插槽