문제

Quiloader를 통해로드 된 GUI에서 Widget ClassNames, 이름 등을 읽어야했습니다. 그리고 저는 Quiloader를 하위 클래스하고 해당 방법을 구현해야했습니다.

메인 윈도우가 있고 메뉴 / 도구 모음을 통해 파일을로드하고 보여줍니다.그리고 내가로드 할 때 나는 그 GUI가 그들과 함께 일할 요소가 무엇인지 알고 싶습니다. 여기에 사용자가 얻은 코드 :

class UiLoader : public QUiLoader
{
    Q_OBJECT
public:
QStringList *wlist;
UiLoader(QObject *parent = 0) : QUiLoader(parent) {}

virtual QWidget* createWidget(const QString &className, QWidget *parent =0, const   QString &name = QString())
{
    QWidget* widget = QUiLoader::createWidget(className, parent, name);
    //here do my stuff with className, parent, name
    return widget;
}
};
.

UILoader를 사용하여 파일을로드했습니다.그리고 그것은 일하고 있습니다.

내 질문은 이제 위젯을 반환하기 전에 CreateWidget을 가로 챌 수 있습니다. 위젯 목록을 얻고 위젯을 반환하고 싶습니다. 나는이 하나만 간단하게 목록을 만드는 효율적인 방법은 어떻게되는지 모른다. 0=> 텍스트 상자, 1=> 버튼, ... 나는 정말로 구조에 관심이 없다. 나는 단지 어느 것이 먼저 어떤 것을 알아야하는지, 그것이 무엇인지 알아야한다.

감사합니다.

도움이 되었습니까?

해결책

나는 솔직히 클래스 로더를 구분하지 않을 것입니다. 퀼로더를 많이 사용하는 기존 코드에 '주입'한 경우에만있을 수 있습니다. 그러나 일반적으로 필요한 것은 다음과 같습니다.

 pWidget = ...->createWidget(...);

 QList<QWidget *> widgets = pWidget->findChildren<QWidget *>();
.

여기에 위젯은 모든 양식 구성 요소 목록이 포함되어 있습니다 ..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top