JSONファイルに保存された追加の接続情報を使用してQT4で再利用可能なGUIコンポーネントを構築するためのオープンソースプロジェクトはありますか?Qt Designerを使用すると、ダイアログを作成して信号とスロットを接続し、結果をUIファイルとして保存できます。これを拡張して、c++またはpysideアプリケーションに簡単にプラグインできるコンポーネントを構築するプロジェクトを探しています。例としては、すべての開始、停止、巻き戻し、早送りボタンを備えた映画プレーヤーのプレイコントロールを作成することです。次に、アプリケーションで、UIファイルまたはコールバック用の追加の入力と出力を含むJSONファイルをロードするだけです。
1 に答える
leeg さん、あなたが JSON で行うことについて話していることはかなり広範です。QWidget のサブクラスとしてカスタム ウィジェットをモデル化することが正しいアプローチであるという Stefan のコメントに同意する必要があります。
いわば、Qt GUI アプリケーションにクラスを簡単にドロップできます。私は、標準の Qt GUI ライブラリにまだ存在しない新しい GUI 要素を作成するときに、この手法を頻繁に使用します。レイアウト (垂直および水平) を設定し、ウィジェットにウィジェットをネストして、複雑に動作するウィジェットを設計できます。そこから、さまざまなイベントを処理するためのカスタム スロットとシグナルを作成できます。
たとえば、開始、停止、巻き戻し、早送りボタンを備えたムービー プレーヤーのプレーヤー コントロールについて言及しました。包含ウィジェットを作成してから、包含ウィジェットに水平レイアウトを追加する必要があります。次に、開始、停止、巻き戻し、早送りのボタンを追加できます。ボタンの画像が必要な場合は、ボタン自体にボタン画像を設定できます。次に、開始、停止、巻き戻し、早送りの信号を送信できます。呼び出し元のオブジェクトで、スロットをそれぞれのシグナルに接続します。
このスケルトンは、開始するのに役立ちます。
#include <QtCore>
#include <QtGui>
class PlayerControl : public QWidget
{
Q_OBJECT
signals:
void start();
void stop();
void rewind();
void fastForward();
private slots:
void startClicked();
void stopClicked();
void rewindClicked();
void fastForwardClicked();
public:
PlayerControl(QWidget *parent);
~PlayerControl();
private:
QPushButton startButton;
QPushButton stopButton;
QPushButton rewindButton;
QPushButton fastForwardButton;
}
void PlayerControl::PlayerControl(QWidget *parent)
{
// do setup here
connect(startButton, SIGNAL(clicked()), this, SLOT(startClicked()));
connect(stopButton, SIGNAL(clicked()), this, SLOT(stopClicked()));
connect(rewindButton, SIGNAL(clicked()), this, SLOT(rewindClicked()));
connect(fastForwardButton, SIGNAL(clicked()), this, SLOT(fastForwardClicked()));
}
void PlayerControl::~PlayerControl()
{
// clean up
}
void PlayerControl::startClicked()
{
emit start();
}
void PlayerControl::stopClicked()
{
emit stop();
}
void PlayerControl::rewindClicked()
{
emit rewind();
}
void PlayerControl::fastForwardClicked()
{
emit fastForward();
}