Qt4 с использованием класса для создания слота для управления setTextSizeMultiplier в QWebView с использованием CONNECT с QSLIDER - PullRequest
0 голосов
/ 13 ноября 2011

Используя Qt4, как мне создать класс для создания слота для управления множителем setTextSizeMultiplier в QWebView с использованием CONNECT с QSLIDER.

Мой код: (ползунок 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 *)’:

1 Ответ

3 голосов
/ 13 ноября 2011

Сначала, чтобы ваш класс поддерживал сигналы / слоты, он должен наследоваться от QObject.

Во-вторых, вы должны использовать макрос Q_OBJECT, который необходим из инструмента moc:

Meta-Object Compiler, moc, это программа, которая обрабатывает C ++ в Qt расширения.

Инструмент 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 - это макрос, вы не можете объявить его так, как вы это сделали.

...