gpt4 book ai didi

c++ - 在 Qt 中更改标签

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:21:22 24 4
gpt4 key购买 nike

我正在尝试制作一个由按钮和标签组成的简单程序。按下按钮时,它应该将标签文本更改为程序内 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();
};

下面是 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);
}

它会运行,但是当单击按钮时,没有任何反应。我做错了什么?

编辑:在我让它工作之后,标签中的文本比标签本身大,所以文本被剪掉了。我通过将 ui->label->adjustSize() 添加到 myclicked() 的定义中来修复它。

最佳答案

您将信号连接到错误的对象。 myclicked() 不是 QLabel 的插槽,它是您的 Widget 类的插槽。连接字符串应该是:

connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(myclicked()));

查看程序的控制台输出。应该有一条错误消息,内容如下:

Error connecting clicked() to myclicked(): No such slot defined in QLabel

关于c++ - 在 Qt 中更改标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2207527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com