クライダイヤーをサブクラショーとITのCreateWidget関数の再実装

StackOverflow https://stackoverflow.com//questions/22070866

  •  23-12-2019
  •  | 
  •  

質問

Quiloaderを介してロードされたGUIからウィジェットクラス名、名前などを読み取る必要がありました。 そして私はここで答えを得ました、私はQuiloaderをサブクラス化し、その方法を再実装するために必要なことを得ました。

MainWindowを持っていて、メニュー/ツールバーを介してファイルをロードして表示します。そして私がロードしたとき、私はその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;
}
};
.

私のファイルをロードするためにUILODERを使用しました。そしてそれは働いています。

私の質問今すぐWidgetを返す前にCreateWidgetを傍受する方法は、ウィジェットのリストを取得してからウィジェットを返します。 このもののように単純なものとしてリストを作成する効率的な方法がどのようになるのかわかりません。 0=> TextBox、1=>ボタン、... 私は本当に構造を気にしません私はちょうどどれが最初に来て、それが何であるかを知る必要があります。

ありがとう。

役に立ちましたか?

解決

私はクラスローダーを正直なところで再現しないでしょう。

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

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

ここに行き、ウィジェットにはすべてのフォームコンポーネントのリストが含まれています..

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top