-1

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

我的代码:(thesliderbar 是 QSlider,vweb 是 QWebView)

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*)' 中:

4

1 回答 1

3

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

其次,您应该使用Q_OBJECTmoc 工具所需的宏:

元对象编译器 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是一个宏,你不能像以前那样声明它。

于 2011-11-13T08:06:45.450 回答