Qt4 использует класс для создания СЛОТА для управления setTextSizeMultiplier QWebView с помощью СОЕДИНЕНИЯ с QSLIDER

#c #qt #class #connect #slot

#c #qt #класс #Контакты #слот

Вопрос:

Используя 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:

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

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

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

Комментарии:

1. Спасибо 🙂 Я решил добавить функцию в существующий класс, и это сработало.