今回作ろうとしているのはボタンを押したら、あらかじめ作っておいた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