Qt4を使用してクラスを使用してSLOTを作成し、QSLebearでCONNECTを使用してQWebViewのsetTextSizeMultiplierを制御する

Qt4を使用して、クラスを作成してSLOTを作成し、QSLebereでCONNECTを使用して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:error: ‘、’ token
の前にprimary-expressionが必要です

ywr.cpp:-1:コンストラクタで ‘ywr :: ywr(QWidget
*)’:

ベストアンサー

まず、クラスがQObjectから継承しなければならない信号/スロットをサポートするようにします。

次に、mocツールから必要な Q_OBJECT マクロを使用する必要があります。

Meta-Object Compiler、mocは、QtのC ++を処理するプログラムです
  拡張機能。

     

mocツールはC ++ヘッダーファイルを読み込みます。 1つまたは複数のクラスが見つかった場合
  Q_OBJECTマクロを含む宣言では、C ++ソースを生成します
  これらのクラスのメタオブジェクト・コードを含むファイル。とりわけ
  物、メタオブジェクトコードは信号とスロットに必要です
  メカニズム、実行時の型情報、および動的プロパティ   システム。

あなたのクラスは次のようになります:

class webextras : public QObject
{
    Q_OBJECT;

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

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

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です