-1

Qt4を使用して、QSLIDERでCONNECTを使用してQWebViewのsetTextSizeMultiplierを制御するSLOTを作成するクラスを作成するにはどうすればよいですか。

私のコード:(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_OBJECT次に、mocツールから必要なマクロを使用する必要があります。

メタオブジェクトコンパイラ、mocは、QtのC++拡張機能を処理するプログラムです。

mocツールはC++ヘッダーファイルを読み取ります。Q_OBJECTマクロを含む1つ以上のクラス宣言が見つかると、それらのクラスのメタオブジェクトコードを含むC++ソースファイルが生成されます。特に、信号とスロットのメカニズム、実行時型情報、および動的プロパティシステムには、メタオブジェクトコードが必要です。

したがって、クラスは次のようになります。

class webextras : public QObject
{
    Q_OBJECT;

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

Ui_ywr *puiですか?Q_OBJECTはマクロなので、自分のように宣言することはできません。

于 2011-11-13T08:06:45.450 に答える