KConfigEditor

はじめに

利用ユーザーのアプリケーション固有の設定ファイルを作成し、設定の保存・読み込みをしましょう。
ここではウィンドウサイズ、ツールバーの状態、ファイルを開く・閉じるのスタートディレクトリあたりを扱ってみましょう。
KXMLActionEditorをベースに、アプリケーション名はKConfigEditorとします。

準備

ヘッダファイルで以下を定義します。

private:
    void readConfig();
    void saveConfig();
    QString m_startdir;

コンストラクタとデストラクタを以下のようにします。

KConfigEditor::KConfigEditor()
{
    txtEdit = new KTextEdit( this );
    setCentralWidget( txtEdit );
    setupAction();
    setupStatusBar();
    readConfig();
    fileNew();
}

KConfigEditor::~KConfigEditor()
{
    saveConfig();
}

それから<kconfig.h>をインクルードしてください。
開く・保存のディレクトリを扱うため以下のように変更してください。

void KConfigEditor::fileOpen()
{
    KURL url = KFileDialog::getOpenURL( m_startdir, i18n("*.txt|Text File (*.txt)\n*|All files") );
    if( url.isEmpty() ) return;

    if( !url.isLocalFile() ){
        KMessageBox::sorry( this, i18n("KConfigEditor can not handle remote files yet") );
        return;
    }

    m_startdir = url.directory();
    GfileName = url.path();
    if( !GfileName.isEmpty() ){
        QFile file( GfileName );
        if ( !file.open( IO_ReadOnly ) ){
            KMessageBox::sorry( this, i18n("KConfigEditor can not open the file") );
            return;
        }
        QTextStream ts( &file );
        QString txt = ts.read();
        txtEdit->setText( txt );

        txtEdit->viewport()->setFocus();
        setCaption( GfileName );
    }
}

bool KConfigEditor::fileSaveAs()
{
    bool blRtn = false;
    KURL url = KFileDialog::getSaveURL( m_startdir, i18n("*.txt|Text File (*.txt)\n*|All files") );
    if( url.isEmpty() ) return blRtn;

    if( !url.isLocalFile() ){
        KMessageBox::sorry( this, i18n("KConfigEditor can not handle remote files yet") );
        return blRtn;
    }

    m_startdir = url.directory();
    GfileName = url.path();
    if( !GfileName.isEmpty() ) {
        blRtn = fileSave();
        setCaption( GfileName );
    }
    return blRtn;
}

設定の読み込み・保存

設定ファイルはKGlobal::config()から取得します。
読み込み・保存は以下のようになります。

void KConfigEditor::readConfig()
{
    KConfig *conf = KGlobal::config();
    conf->setGroup("main");
    m_startdir = conf->readEntry( "startdir", QString::null );
    applyMainWindowSettings( conf, "window" );
}

void KConfigEditor::saveConfig()
{
    KConfig *conf = KGlobal::config();
    conf->setGroup("main");
    conf->writeEntry( "startdir", m_startdir );
    saveMainWindowSettings( conf, "window" );
}

m_startdirについてはWindowsのiniファイルみたいな扱いですね。
ウィンドウのサイズ、ツールバーの状態はひとつひとつ自分で保存してもいいのですが、
(apply|save)MainWindowSettingsという関数でまとめてできます。

さらに詳しいKConfigの使いかたはリファレンスマニュアルを御覧下さい。
ここで利用したのがQString型でしたが、他にも色々な変数のタイプが扱えます。

おわりに

今回作成した全てのファイルはkconfigeditor.tar.gzからダウンロードすることができます。

スポンサード リンク

トラックバック

トラックバックURL
https://linux-life.net/tb/program/cc/kde/doc/kconfigeditor/
Linux Life 〜 No linux, No life 〜
プログラミング > C++ > KDE > KDEプログラミング入門 > KConfigEditor