超有用的プロパティブラウザコントロール - QtTreePropertyBrowser

概要

Qtライブラリには多くのウィジェットが含まれており、その中にテーブル、木構造、リストなどのコンテナウィジェットも含まれています。

QtDesignerを使用したことがある方は都知道、このツールにはプロパティエディタがあり、VSのプロパティパネルと同様のプロパティブラウザコントロールです。

今回はQTreeWidgetをベースにしたプロパティコントロールであるQtTreePropertyBrowserを紹介します。このコントロールはまだQtの正式なバージョンには含まれていません。

ソースコードのダウンロード

QtTreePropertyBrowserを使用するには、まずGitHubからソースコードをダウンロードし、自分でコンパイルする必要があります。

下图はGitHubのコミット履歴ですが、提交時点から既に9년이経過しているため、コードの古さが感じられるかもしれません。

コードのコンパイル

古いため、Qt5でコンパイルするにはいくつかの問題を解決する必要があります。以下の9つの主要な修正點について説明します。

1. intersect関数をintersectedに変更

//旧コード
area.intersect(QRect(0, 0, width(), height()));
//新コード
area.intersected(QRect(0, 0, width(), height()));

2. UnicodeUTF8の削除

QApplication::UnicodeUTF8を削除します。前のカンマも必ず削除してください。

3. QtGuiモジュールの分割

Qt4からQt5への大きな変更点として、QtGuiモジュールの多くの機能がQtWidgetsモジュールに分割されました。QtGuiをQtWidgetsに変更してください。

//旧コード
#include <QtGui/QWidget>
//新コード
#include <QtWidgets/QWidget>

4. Q_TYPENAMEエラー

グローバル置換でQ_TYPENAMEをtypenameに置き換えてください。

5. qVariantValueエラー

グローバル置換でqVariantValue()をqvariant_cast()に置き換えてください。

6. qFindChildrenエラー

Qt5ではqFindChildren()が廃止され、findChildren()で代替可能です。

//旧コード
QList<QtIntPropertyManager *> intManagers = qFindChildren<QtIntPropertyManager *>(manager);
//新コード
QList<QtIntPropertyManager *> intManagers = manager->findChildren<QtIntPropertyManager *>();

7. setMovableの削除と変更

//旧コード
setMovable()
//新コード
setSectionsMovable()

8. setResizeModeの変更

//旧コード
setResizeMode()
//新コード
setSectionResizeMode()

9. QtWidgetsモジュールの追加

プロジェクトごとにQtWidgetsモジュールを追加する必要があります。

実行結果

コンパイルが完了すると、複数の実行ファイルが生成されます。そのうちのsimple.exeを実行すると、以下のような結果が得られます。

参考記事

  • Qt-解锁QtPropertyBrowser控件
  • Qt5.4.2编译 qtpropertybrowser-2.51(从4修改到5的除错過程)

タグ: Qt QtWidgets QtPropertyBrowser GUI property-editor

7月22日 16:15 投稿