当前位置: 代码迷 >> QT开发 >> 关于QSettings
  详细解决方案

关于QSettings

热度:235   发布时间:2016-04-25 03:01:43.0
关于QSettings,求助
弄了半天,字体老是默认大小,不会载入上次的配置。颜色可以。不知道什么原因,求大神告知。

代码如下。

//widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QFontDialog>
#include <QColorDialog>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;


private slots:
    void readSettings();
    void colorSlot();
    void fontSlot();
};

#endif // WIDGET_H





//widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QSettings>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->readSettings();
    ui->textEdit->setText("为什么字体有问题");

    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(fontSlot()));
    connect(ui->pushButton2, SIGNAL(clicked()), this, SLOT(colorSlot()));
}

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

void Widget::readSettings(){

    QSettings *configIniRead = new QSettings("settings.ini", QSettings::IniFormat);

    //读取字体颜色配置
      QString fontresult = configIniRead->value("/font").toString();
      ui->textEdit->setCurrentFont( fontresult);
      ui->textEdit->document()->setModified(true);


      QString colorresult = configIniRead->value("/color").toString();
      ui->textEdit->setTextColor( colorresult);
      ui->textEdit->document()->setModified(true);
      delete configIniRead;

}



void Widget::fontSlot()
{
    bool ok;

    QFont font = QFontDialog::getFont(&ok, ui->textEdit->font(), this, "字体");

    if (ok)
    {
        ui->textEdit->setCurrentFont(font);
        ui->textEdit->document()->setModified(true);

        QSettings *configIniWrite = new QSettings("settings.ini", QSettings::IniFormat);
        configIniWrite->setValue("/font", font);
        delete configIniWrite;






    }
}
void Widget::colorSlot()
{
    QColor color = QColorDialog::getColor(Qt::green, this, "颜色");

    if (color.isValid())
    {
        ui->textEdit->setTextColor(color);
        ui->textEdit->document()->setModified(true);

        QSettings *configIniWrite = new QSettings("settings.ini", QSettings::IniFormat);
        configIniWrite->setValue("/color", color);
        delete configIniWrite;


    }
}






//main.cpp
#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}


------解决思路----------------------
难道因为字体是中文名字?
------解决思路----------------------
还有可能value中间有空格

引用:
难道因为字体是中文名字?

------解决思路----------------------
这是问题,

     //读取字体颜色配置
      QString fontresult = configIniRead->value("/font").toString(); 
      ui->textEdit->setCurrentFont( fontresult); //这里你用QString构造了一个默认的字体,
                                                                               //这个字体只有字体名字,没有其它信息,比如大小是否加粗等.


修改

      //读取字体颜色配置
      QString fontresult = configIniRead->value("/font").toString(); 
      QFont font;
      font.fromString(fontresult);
      ui->textEdit->setCurrentFont( font);
 

  相关解决方案