1

まったくなじみのないフレームワークである Qt を使用してアプリケーションを開発しており、デザイナーを使用して作成した DockWidget を表示および非表示にしようとしています。

Qt でのドックウィジェットの表示と非表示に関する一見似たような質問の多くとは異なり、ウィジェットを完全に Qt Designer で作成したため、これらの質問の回答で見つけたコードの多くをリンクする方法がわかりません。基本的に、*.cpp ファイルではドックウィジェットについて言及していませんが、.ui ファイルでは言及しています。

このデザイナーが作成したドックウィジェットをコードに組み込んで、表示および非表示にするにはどうすればよいですか?

このような初心者の質問で申し訳ありません。

ありがとう、エリプ

4

1 に答える 1

0

アプリケーションをビルドすると、ui ファイルからqmake生成されます。hたとえばui_dlg_about.ui、自動的に に変換されui_dlg_about.hます。通常、GeneratedFiles などと呼ばれるフォルダーにあります。次に、以下に沿って何かを作成することにより、アプリケーションで使用する実際のカスタマイズ可能なダイアログ クラスを作成できます。

dlg_about.h

#include "ui_dlg_about.h"
#include <QDialog>

class dlg_about : public QDialog, protected Ui::ui_dlg_about
{
    Q_OBJECT

    public:
        dlg_about(QWidget* = 0);

    public slots:
        void toggle_dockwidget();
};

dlg_about.cpp

#include "dlg_about.h"

dlg_about::dlg_about(QWidget* parent) : QDialog(parent)
{
    setupUi(this);

    QObject::connect(this->somebutton, SIGNAL(clicked()), this, SLOT(toggle_dockwidget()));
}

void dlg_about::toggle_dockwidget()
{
    if(something){
        this->dockwidget->setVisible(true);
    }else{
        this->dockwidget->setVisible(false);
    }
}

ダイアログを派生させずui_dlg_about、メンバーとして持つこともできます。

dlg_about.h

#include "ui_dlg_about.h"
#include <QDialog>

class dlg_about : public QDialog
{
    Q_OBJECT

    public:
        dlg_about(QWidget* = 0);

    public slots:
        void toggle_dockwidget();

    protected:
        Ui::ui_dlg_about ui;
};

dlg_about.cpp

#include "dlg_about.h"

dlg_about::dlg_about(QWidget* parent) : QDialog(parent)
{
    setupUi(this->ui);

    QObject::connect(this->ui.somebutton, SIGNAL(clicked()), this, SLOT(toggle_dockwidget()));
}

....
于 2014-12-03T12:27:34.600 に答える