gpt4 book ai didi

c++ - 如何在另一个类中使用一个类?

转载 作者:行者123 更新时间:2023-11-30 02:43:49 26 4
gpt4 key购买 nike

我正在开发 Qt 应用程序,但我对 C++ 还是个新手。我想做的是创建一个类作为变量,然后使用另一个类中的内容。

我的结构和我正在尝试做的事情,由 --> 和 <-- 表示:

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "settings.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow {
Q_OBJECT

public:
-->BHSettings settings(qApp->applicationDirPath() + "/settings.ini");--<

explicit MainWindow(QWidget *parent = 0);
~MainWindow();

private:
Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

主窗口.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
ui->setupUi(this);
}

MainWindow::~MainWindow() {
delete ui;
}

void MainWindow::doSomething() {
-->settings.loadSettings();<--
}

settings.h

#ifndef BHSETTINGS_H
#define BHSETTINGS_H

#include <QSettings>

class BHSettings : public QSettings {
public:
QString theme;

BHSettings(QString settingsFilePath);
void loadSettings();
void saveSettings();
void saveSettings();
};

#endif // BHSETTINGS_H

settings.cpp

#include "settings.h"

BHSettings::BHSettings(QString settingsFilePath) : QSettings(settingsFilePath, QSettings::IniFormat) {
loadSettings();
saveSettings();
}

void BHSettings::loadSettings() {
theme = getTheme();
}

void BHSettings::saveSettings() {
setValue("General/Theme", theme);
}

QString BHSettings::getTheme() {
return value("General/Theme", "default").toString();
}

我完全不知道该怎么做。关于如何定义另一个类以使用其方法的一些指导会很棒。

最佳答案

你有一个很好的开始,但是由于你的 BHSettings 类有一个非默认构造函数,为了将它作为一个成员变量,你应该将它初始化到你的构造函数的初始化列表中

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent),
ui(new Ui::MainWindow),
settings(qApp->applicationDirPath() + "/settings.ini") <--
{
ui->setupUi(this);
}

您不能在类声明中将其初始化为内联声明或类似您正在做的事情。

另请注意,这将导致每次实例化 MainWindow 类时初始化您的设置对象(即构造BHSettings 的对象)

关于c++ - 如何在另一个类中使用一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25856808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com