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

问题描述 投票:0回答:1

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

我的代码:(sliderbar是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*)’中:

c++ qt class slot
1个回答
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 *pui
Q_OBJECT
是一个宏,你不能像你那样声明它。

© www.soinside.com 2019 - 2024. All rights reserved.