各部分を物理的にコピーして貼り付けるのではなく、多数のセクションを複製する必要がある Qt で GUI を構築しています。オブジェクト/サブクラスを使用する方法を好むので、一度だけ設計する必要があります。それの複数のインスタンスを作成します。変更を加える必要があるのは 1 回だけなので、開発プロセスが簡素化されます。
これを行う最善の方法は何ですか?
各部分を物理的にコピーして貼り付けるのではなく、多数のセクションを複製する必要がある Qt で GUI を構築しています。オブジェクト/サブクラスを使用する方法を好むので、一度だけ設計する必要があります。それの複数のインスタンスを作成します。変更を加える必要があるのは 1 回だけなので、開発プロセスが簡素化されます。
これを行う最善の方法は何ですか?
私はかつて、かなりのコントロールを備えたファイルのタブを開くアプリケーションを作成しました。QT がかなり貪欲にメモリを消費することがわかりました。一度に表示できるタブ ウィジェットは 1 つだけなので、最終的に書き直しました。偽造して、1 つだけにして、そのウィジェット内のデータ (コントロールの状態) を変更するだけで、ウィジェットを切り替えているような錯覚を作り出すことができます。
それが役立つかどうかはわかりません。サブクラス化に関しては、他の c++ クラスと同様に、qt クラスをサブクラス化してインスタンス化することができます。
うまくいかないことについてもう少し具体的に教えていただけますか?
QWidget または QFrame をサブクラス化し、繰り返す必要のあるすべてのコントロールを表示させます。そうすれば、コピーして貼り付ける代わりに、いくつかのサブクラスを作成できます。
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget( QWidget* parent = 0)
//Member functions
private:
QLablel* label;
QTextField* text;
//More ui components
}
MyWidget::MyWidget( QWidget* parent) : QWidget(parent)
{
label = new QLabel(this);
text = new QTextField(this)
}
デザイナーから、QMainWindow の代わりに QWidget で開始することを選択した場合、ウィジェットを他のウィジェットまたはフォームに追加できます。これは、ウィジェットをデザイナーにインポートすることでおそらく実行できますが、私はそれを機能させたことはありません. 私は通常、デザイン モードで使用するのと同じサイズのプレースホルダーを持っており、フォームにデータが入力されたときにフォームをカスタム プレースホルダーと交換します。