1

我是 Qt 编程的新手,我对下面的代码有一些问题。我想用一个标签创建一个简单的两按钮应用程序。一个按钮用于正增量一,另一个按钮用于减一。单击加号或减号按钮后,标签应更新。但它不起作用。任何想法为什么代码不起作用?我收到元素函数 void 的编译器错误。但是错误消息相当不具体。

我检查了互联网(密集的谷歌搜索以及在 stackoverflow 上)的解决方案,但我找不到解决方案。我非常感谢任何直接帮助或与其他网站/链接的链接。如果我应该改写问题或添加更多信息,请告诉我。谢谢你的时间。斯特凡

#include "widget.h"

int counter = 0;

Widget::Widget(QWidget *parent) :
QWidget(parent)
{
    setFixedSize(200, 120);

    QPushButton *Plus = new QPushButton(tr("+"), this);
    Plus -> setGeometry(62, 40, 75, 30);
    Plus -> setFont(QFont("Times", 10, QFont::Bold));

    QPushButton *Minus = new QPushButton(tr("-"), this);
    Minus -> setGeometry(62, 40, 75, 30);
    Minus -> setFont(QFont("Times", 10, QFont::Bold));

    QLabel *MyLabel = new QLabel();
    MyLabel ->setAlignment(Qt::AlignCenter);
    MyLabel ->setGeometry(62, 40, 75, 30);
    MyLabel ->setNum(counter);

    QVBoxLayout *layout = new QVBoxLayout;
    layout ->addWidget(MyLabel);
    layout ->addWidget(Plus);
    layout ->addWidget(Minus);
    setLayout(layout);


    connect(Plus, SIGNAL(clicked()), this, SLOT(myClickPlus()));
    connect(Minus, SIGNAL(clicked()), this, SLOT(myClickMinus()));
}

void Widget::myClickPlus(){
    counter ++;
    qDebug("Das ist der Plus-Button");
    MyLabel -> setNum(counter);
}

void Widget::myClickMinus()
{
    counter --;
    qDebug("Das ist der Minus-Button");
    MyLabel ->setNum(counter);
}
4

1 回答 1

3

您在 Widget 的构造函数中创建的 MyLabel 是一个局部变量。您在 myClickPlus 和 myClickMinus 成员函数中使用的 MyLabel 是一个成员变量。所以它们是完全不同的实例。

如果您的代码可以编译,那么 Widget 构造函数中的这种更改可能会解决问题:

QLabel *MyLabel = new QLabel(); // create local QLabel

-->

MyLabel = new QLabel();  // create member QLabel
于 2012-04-15T17:59:29.147 回答