メインウィンドウに予めレイアウトしたサブウィンドウを追加する方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
トニ
記事: 4
登録日時: 8年前

メインウィンドウに予めレイアウトしたサブウィンドウを追加する方法

#1

投稿記事 by トニ » 8年前

今回はQtとvisualstudioを用いたプログラムについて質問をします。
今回作ろうとしているのはボタンを押したら、あらかじめ作っておいたuiファイルをドッグウィンドウとしてメインウィンドウに追加されるプログラムです。

現在、私はQt5.3とvisualstudio2013を用いて簡単なプログラムを作ろうとしています
前回から全然進捗がなくて恥ずかしい限りなのですが、
http://www.fastpic.jp/images.php?file=9162763034.png
図1のようにボタンを押したら、メインウィンドウ左端に
ドックウィンドウとしてあらかじめ作成したuiファイルを追加して表示したいのですが、
図2のようにドッグウィンドウ&別画面としてuiファイルで作成しておいた画面が出るという状態になってしまいます。

メインウィンドウが2つになっている状態(?)なのでしょうか?
これを1つにまとめたいのですが……uiファイルでレイアウトを作成せずに、ソースコード上でドックウィンドウに1つ1つボタンとかレイアウトとか追加するしかないのでしょうか?

google力がなかったので、あんまり調べきれていないのかもしれませんが
知恵を貸していただけたら幸いです
以上のことよろしくお願いいたします

コード:

//main.cpp
#include "buttonproliferation.h"
#include <QtWidgets/QApplication>
#include <iostream>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	buttonProliferation w;
	w.show();
	return a.exec();
}

コード:

//dialog.cpp
#include "dialog.h"

Dialog::Dialog(QWidget *parent)
: QWidget(parent)
{
	ui.setupUi(this);
	setWindowFlags(Qt::Window); // Windowにします!
}

Dialog::~Dialog()
{

}

コード:

//buttonproliferation.cpp
#include "buttonproliferation.h"
#include <QMessageBox>

buttonProliferation::buttonProliferation(QWidget *parent)
: QMainWindow(parent)
{
	ui.setupUi(this);
}

buttonProliferation::~buttonProliferation()
{

}

//自分で書いた部分
void buttonProliferation::pushButton()
{
	// あらかじめ作ったdialog.uiファイルをドッグウィンドウとしてメインウィンドウに追加したい
	QDockWidget *dock = new QDockWidget(QString::fromLocal8Bit("Dialog"), this);
	dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
	Dialog *dialog_ = new Dialog(dock);
	dock->setWidget(dialog_);
	addDockWidget(Qt::LeftDockWidgetArea, dock);
}

コード:

//buttonproliferation.h
#ifndef BUTTONPROLIFERATION_H
#define BUTTONPROLIFERATION_H

#include <QtWidgets/QMainWindow>
#include "ui_buttonproliferation.h"
#include <QPushButton>
#include <QDockWidget>
#include "dialog.h"

class buttonProliferation : public QMainWindow
{
	Q_OBJECT

public:
	buttonProliferation(QWidget *parent = 0);
	~buttonProliferation();

private:
	Ui::buttonProliferationClass ui;
	//int count_pushButton = 0;//ボタンを押した回数

//自分で書いた部分(スロットの定義)
private slots:
void pushButton();



};

#endif // BUTTONPROLIFERATION_H

コード:

//dialog.h
#ifndef DIALOG_H
#define DIALOG_H

#include <QWidget>
#include "ui_dialog.h"

class Dialog : public QWidget
{
	Q_OBJECT

public:
	Dialog(QWidget *parent = 0);
	~Dialog();

private:
	Ui::Dialog ui;
};

#endif // DIALOG_H

C6b14

Re: メインウィンドウに予めレイアウトしたサブウィンドウを追加する方法

#2

投稿記事 by C6b14 » 8年前

いまQt5.6がVB2015(とVB2013)用にインストール出来てサムプルゲームをしてるのですが。

コード:

TEMPLATE = app

QT += qml quick
qtHaveModule(multimedia): QT += multimedia
SOURCES += main.cpp
RESOURCES += maroon.qrc

target.path = $$[QT_INSTALL_EXAMPLES]/quick/demos/maroon
INSTALLS += target
こんな感じの.proというファイルがあると思います。良かったら見せて頂けますでしょうか。

トニ
記事: 4
登録日時: 8年前

Re: メインウィンドウに予めレイアウトしたサブウィンドウを追加する方法

#3

投稿記事 by トニ » 8年前

c61b4様
残念ながら、自分が作っていたプログラムでは、
そのようなファイルが見つかりませんでした……。

念のため、ソリューションエクスプローラを晒しておきます
http://www.fastpic.jp/viewer.php?file=9763704736.png

C6b14

Re: メインウィンドウに予めレイアウトしたサブウィンドウを追加する方法

#4

投稿記事 by C6b14 » 8年前

Qt5.3ではQt Creator は使わないのでしょうか?かなり違って見えます。


C6b14

Re: メインウィンドウに予めレイアウトしたサブウィンドウを追加する方法

#6

投稿記事 by C6b14 » 8年前

取り敢えずQtデザイナ―を使えば解決する気がします。多分別の手法があるのでしょう。
http://csi.nisinippon.com/qt56aaa.png
http://csi.nisinippon.com/qt56bbb.png

閉鎖

“C言語何でも質問掲示板” へ戻る