サブクラスの取り込み方法について
自分または他の人が作ったQWidgetクラス等取り込めると便利
内容
プロジェクト内に更に,"widget1"というQWidgetクラスのプロジェクトを作成.それを取り込みたい.(ビルドシステムはcmakeを使用)
add_executableで以下のようにサブプロジェクトクラスのパスを通す.
CMakeLists.txt
add_executable(connect_qt2
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
widget1/widget1.cpp
widget1/widget1.h
widget1/widget1.ui
)
Layout内にQWidgetを包み,親プロジェクトのQWidgetに入れ込む.今回はサブプロジェクトのクラスとQPushButtonを入れてみた.
mainwindow.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include "./widget1/widget1.h"
#include <QVBoxLayout>
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QVBoxLayout *layout = new QVBoxLayout();
Widget1 *w = new Widget1;
layout->addWidget(w);
QPushButton *button1 = new QPushButton("One");
layout->addWidget(button1);
ui->centralwidget->setLayout(layout);
}
MainWindow::~MainWindow()
{
delete ui;
}
stacked widgetにサブクラスを入れ込む場合->insertWidgetでページにQWidgetを入れる.
mainwindow.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include "./widget1/widget1.h"
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
Widget1 *w = new Widget1;
QPushButton *button1 = new QPushButton("One");
ui->stackedWidget->insertWidget(0,w);
ui->stackedWidget->insertWidget(1,button1);
ui->stackedWidget->setCurrentIndex(0);// インサートでページ2くらいになってしまっている?みたいなのでindexを0に設定
}
MainWindow::~MainWindow()
{
delete ui;
}