Qt4使用Class创建一个SLOT来控制QWebView的setTextSizeMultiplier使用CONNECT和QSLIDER

时间:2011-11-13 04:34:17

标签: c++ qt class connect slot

使用Qt4,如何使用CONNECT和QSLIDER创建一个类来创建一个SLOT来控制QWebView的setTextSizeMultiplier。

我的代码:( thesliderbar是QSlider,vweb是QWe​​bView)

class webextras
{
    Q_OBJECT::Ui_ywr *pui;

public slots:
    void wtresize(int wtr)
    {
        pui->vweb->setTextSizeMultiplier(wtr);
    }
};

connect(thesliderbar,SIGNAL(valueChanged(int)),webextras,SLOT(wtresize(int)));

我收到了connect();。

的错误

错误:

ywr.cpp:31:错误:在','令牌之前预期的主要表达式

ywr.cpp:-1:在构造函数'ywr :: ywr(QWidget *)'中:

1 个答案:

答案 0 :(得分:3)

首先,为了使您的类能够支持信号/插槽,它必须从QObject继承。

其次,你应该使用moc工具所需的宏Q_OBJECT

  

元对象编译器moc是处理Qt C ++的程序   扩展。

     

moc工具读取C ++头文件。如果找到一个或多个类   包含Q_OBJECT宏的声明,它生成一个C ++源代码   包含这些类的元对象代码的文件。除其他外   事物,信号和插槽需要元对象代码   机制,运行时类型信息和动态属性   系统

所以你的课应该是:

class webextras : public QObject
{
    Q_OBJECT;

public slots:
    void wtresize(int wtr)
    {
        pui->vweb->setTextSizeMultiplier(wtr);
    }
};

什么是Ui_ywr *puiQ_OBJECT是一个宏,你不能像你那样声明它。