LoginSignup
1
0

More than 1 year has passed since last update.

Qt Creator/C++ サブクラス/サブプロジェクトの扱い方 メモ

Last updated at Posted at 2021-12-09

サブクラスの取り込み方法について
自分または他の人が作った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;
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0