• 5574阅读
  • 4回复

QT中信号与槽的连接--按钮来改变自己定义的变量的值 [复制链接]

上一主题 下一主题
离线workdorm
 
只看楼主 正序阅读 楼主  发表于: 2011-05-23
这样一段代码有三个文件ww.h,ww.cpp,main.cpp,在头文件中定义了一个VCP类,在头文件中定义一个函数“void jiafa(int m,int n,int z)”,这个函数不是VCP类中的成员,在ww.cpp中有“void jiafa(int m,int n,int z){z=m*y+n-y;}"现在我想通过控件来改变y的值,从而使表达式z的值改变,现在我要把y定义成ww.cpp中全局变量?还是定义在类VCP的公共部分或者私有部分?不知道怎样连接把他们连接起来,如何设置点击微调按钮的步长值?就是点击一次就加5或者减5?望详细的代码。

ww.h的部分代码:

class VCP : public QWidget
{
Q_OBJECT
public:
VCP(QWidget *parent=0);
private:
QSpinBox *spinbox;//定义一个微调按钮
……;

protected:
void mm(……);
……;
private slots:
……;
};

void jiafa(int m,int n,int z);



ww.cpp文件的部分代码:
int z;//全局变量
VCP::VCP(QWidget *parent) : QWidget(parent)
{
spinbox=new QSpinBox;
spinbox->setValue(45);//设置初值为45
spinbox->setRange(0,100);//设置范围0-100
connect(spinBox, SIGNAL(valueChanged(int)), ? , SLOT(setValue(int)));“//这里要如何连接上y,从而改变y的值?


VCP::void mm(……)
{……;
jiafa(int m,int n,int z);
……;
}

jiafa(int m,int n,int z)
{z=m*y+n-y;}


main.cpp文件的部分代码:
{ QApplication app(argc,argv);
VCP ww;
……;
return app.exec();}

由于代码过长,只列出了部分代码,希望高手可以在这部分代码的基础上给出好的方法。
离线ppdayz

只看该作者 4楼 发表于: 2011-05-24
jiafa(int m,int n,int z){z=m*y+n-y;}
z是全局的话就更加不对了

这样才是吧
jiafa(int m,int n){z=m*y+n-y;}
离线workdorm
只看该作者 3楼 发表于: 2011-05-24
回 2楼(jdwx) 的帖子
z是全局变量
离线jdwx

只看该作者 2楼 发表于: 2011-05-23
y                                                     VCP类成员变量
jiafa(int m,int n,int z)        VCP类成员函数
jiafa(int m,int n,int z){z=m*y+n-y;} 这个函数有点问题,看来你想用z返回结果,
应该是jiafa(int m,int n,int &z){z=m*y+n-y;}
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线浪漫天使
只看该作者 1楼 发表于: 2011-05-23
把整个工程代码打包上来 供大家围观下方便么?
快速回复
限100 字节
 
上一个 下一个