我正在开发一个Qt应用程序,而且我对C ++很陌生。我正在尝试做的是创建一个类作为变量,然后使用其他类中的内容。
我的结构和我尝试做的事情,由 - >表示和< - :
mainwindow.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
mainwindow.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();
}
我完全迷失了如何做到这一点。关于如何定义另一个类以使用其方法的一些指导将是很好的。
答案 0 :(得分:1)
你有一个很好的开始,但由于你的BHSettings
类有一个非默认的构造函数,为了将它作为成员变量,你应该将它初始化为构造函数的初始化列表
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
settings(qApp->applicationDirPath() + "/settings.ini") <--
{
ui->setupUi(this);
}
你不能在类声明中将它初始化为内联声明或者你正在做的事情。
另请注意,每次实例化BHSettings
类
MainWindow
的对象构造)
答案 1 :(得分:1)
在没有初始化代码的情况下在类定义中声明成员。
BHSettings settings;
在类的构造函数中添加初始化代码。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::MainWindow),
settings(qApp->applicationDirPath() + "/settings.ini")
{
ui->setupUi(this);
}
您可以使用:
void MainWindow::doSomething() {
settings.loadSettings();
}
如果您在该功能之前不需要设置。如果有意义的话,你也可以在构造函数中调用它。
答案 2 :(得分:1)
在MainWindow类中,定义变量:
public:
BHSettings settings;
在构造函数中初始化这个memeber:
MainWindow::MainWindow(QWidget *parent) : ... , settings(qApp->applicationDirPath() + "/settings.ini")
{
...
}