2014-10-17 3 views
0

Проще говоря, мне нужен новый класс, который расширяет пользовательский виджет, который я создал, и, следовательно, имею полный доступ к его пользовательскому интерфейсу.Qt Расширение моего собственного виджета

Я пробовал несколько разных методов до сих пор, основываясь на том, как обычно подкласс или расширение классов, но я как-то терпеть неудачу по многим причинам.

Кроме того, просто использование моего виджета в качестве члена в моем новом классе не подойдет для этой ситуации.

Может кто-нибудь проиллюстрировать быстрый пример того, как я буду это делать? Я сделал кучу поиска, но я не могу найти никаких обращений, связанных с тем, что я пытаюсь сделать. Если все остальное не получится, я просто скопирую код и сделаю новый виджет, который технически будет иметь спас меня много времени, но он просто не чувствует себя хорошо, делая это.

Мой первый инстинкт должен был сделать что-то вроде этого (Qwe быть мой новый класс, Asd быть виджет):

class Qwe : Asd {public: ...} 

И я даже сделал Ui общественности виджета, но тогда я только что получил сообщение об ошибке:

использование типа Undefine Ui :: Asd

всякий раз, когда я попытался получить доступ к элементам пользовательского интерфейса в.

ответ

2

Предположим, у нас есть собственный виджет с именем BaseWidget и дочерний виджет с именем ChildWidget. Объявить BaseWidget как обычно, но сделать его ui членом защищены вместо частного, так:

protected: 
    Ui::BaseWidget *ui; 

Объявить ChildWidget как обычный виджет, полученного из BaseWidget. Убедитесь, что вы включили ui_BaseWidget.h в файл ChildWidget.cpp, как и в BaseWidget.cpp (сюда входят и сам заголовок генерируется Qt).

Заголовок:

#include "BaseWidget.h" 

class ChildWidget : public BaseWidget { 
    Q_OBJECT 
public: 
    explicit ChildWidget(QString text, QWidget *parent = 0);  
}; 

Источник:

#include "ChildWidget.h" 
#include "ui_BaseWidget.h" 

ChildWidget::ChildWidget(QString text, QWidget *parent) : 
    BaseWidget(parent) 
{ 
    ui->label->setText(text); 
} 
+0

Спасибо, это моя проблема решена – Yattabyte

 Смежные вопросы

  • Нет связанных вопросов^_^