カンテラの光の下で

dNaga392's memorandom

neobundleを導入する

neobundleが便利で自宅環境にも導入にしようとしたのですが、
思いがけないところで躓いたのでメモ。

つまずいた箇所は、

という箇所。これがないとNeoBundleInstallが失敗します。
しかもエラーメッセージなしなので、結構痛かった。

参考

【Qt】【QMessageBox】メッセージボックスからボタンを消す

メッセージボックスからボタンを消すにはメソッドsetStandardButtonsに0を渡してあげます。

QMessageBox m;
m.setStandardButtons(0);

ただ、クラスを作っても良いならQDialogを基底にQLabelを配置したダイアログを作成するのもありかも。

参考

【Vim】【Markdown】VimでMarkdownのシンタックスハイライトを使う

標準のハイライトでは*.md等のファイルはMarkdownではなく modula2 のものと判断されているらしい。

そのため、以下の記述を.vimrcに加えてあげる

autocmd BufNewFile,BufRead *.{md,mdwn,mkd,mkdn,mark*} set filetype=markdown

参考

【Qt】【QWidget】ウィジェットの画面を描画する

ウィジェットの画面を他のペイントデバイス(QPaintDeviceの派生クラス)に描画する方法です。

// QPixmapにウィジェットの表示を直接描画する方法

QWidget *w = new QWidget();

// 描画内容の設定
QLabel *lbl = new QLabel("Hello world.");
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(lbl);
w->setLayout(layout);

// 描画先の用意
// ウィジェットと同じサイズを用意
QPixmap pix(w->size());

// ウィジェットの描画
// まず表示してウィジェットの描画イベントを走らせる
w->show();
// 描画内容を複写
w->render(&pix);
// 複写内容を保存(確認用)
pix.save("hello.png");

QWidget を表示せず描画する場合は、ウィジェットに Qt::WA_DontShowOnScreen を設定します。

// QPixmapにウィジェットの内容を非表示で直接描画する方法

QWidget *w = new QWidget();

// 描画内容の設定
// (略)

// 描画先の用意
// (略)

// ウィジェットの描画
// スクリーンに表示しない設定とする
w->setAttribute(Qt::WA_DontShowOnScreen);
// showしてウィジェットの描画イベントを走らせる
w->show();
// 描画内容を複写
w->render(&pix);
// 複写内容を保存(確認用)
pix.save("hello.png");

ここまで QPixmap に描画しましたが、render関数は QPainter を引数にすることもできます。

// QPainterを介してウィジェットの表示を描画する方法

QWidget *w = new QWidget();

// 描画内容の設定
// (略)

// 描画先の用意
// ウィジェットと同じサイズを用意
QPixmap pix(w->size());
// QPainterに描画先を設定
QPainter p(&pix);

// ウィジェットの描画
// まず表示してウィジェットの描画イベントを走らせる
w->show();
// QPainterを介して描画内容を複写
w->render(&p);
// 複写内容を保存(確認用)
pix.save("hello.png");

参考

c++ - Qt: How to force a hidden widget to calculate its layout? - Stack Overflow

【Git】gitconfigの分割管理[include]

.gitconfig を管理の際にいくつかのファイルに分けたいといった場合があります。
こんなとき役立つのが[include]です。

[include]は指定したpathのファイルを展開し、.gitconfigの記述として扱います。
以下はユーザー情報をエイリアス設定を別ファイルに記述し、それらを.gitconfigで扱う例です。

# ~/.gitconfig
[include]
    # ユーザー情報
    path = .gitconfig.user
    # gitconfig本体
    path = ~/dotfiles/.gitconfig
# ~/.gitconfig.user
[user]
    name = nagatsuki
    email = nagatsuki30@gmail.com
# ~/dotfiles/.gitconfig
[alias]
    ad  = add

参考

.gitconfig で他のファイルを include - Qiita

ディレクトリの呼び方

ディレクトリ、いわゆるフォルダの呼び方について。
ディレクトリの下位のディレクトリはサブディレクトリと呼ぶけど、 上位のディレクトリはなんて呼べば良いのだろうと思い調べました。

結果から言うと「親ディレクトリ」で良いようです。

呼称(日本語) 英語名 記号
カレントディレクトリ Current Directory .
親ディレクトリ Parent Directory ..
ホームディレクトリ Home Directory ~
ルートディレクトリ Root Directory C:\
区切り文字 Directory Separator \

Path (computing) - Wikipedia, the free encyclopedia

【Qt】英国のラウンデルを描画

比率は目測です。以下のメッセージが出るのでそのままは使わないでください
QPaintDevice: Cannnot destroy paint device that being painted

QPixmap takeRAFRoundel()  
{  
    // 画像のサイズ  
    int width  = 500;  
    int height = 500;  
    QPoint center(width/2,height/2);  
    QPixmap pix(width,height);  
    QPainter *p = new QPainter(&pix);  
    // 背景を白で塗りつぶす  
    p->setPen(*(new QColor(0xFF,0xFF,0xFF,0xFF)));  
    p->fillRect(0,0,width,height,*(new QBrush(QColor(0xFF,0xFF,0xFF))));  
    // 青い丸を描く  
    p->setPen(*(new QColor(0x00,0x24,0x7D,0xFF)));  
    p->setBrush(*(new QBrush(QColor(0x00,0x24,0x7D,0xFF))));  
    // drawArcでは塗りつぶしができない  
    // そのため、drawEllipseを使う  
    p->drawEllipse(center,500/2,500/2);  
    // 白い丸を描く  
    p->setPen(*(new QColor(0xFF,0xFF,0xFF,0xFF)));  
    p->setBrush(*(new QBrush(QColor(0xFF,0xFF,0xFF,0xFF))));  
    p->drawEllipse(center,325/2,325/2);  
    // 赤い丸を描く  
    p->setPen(*(new QColor(0xCE,0x11,0x26,0xFF)));  
    p->setBrush(*(new QBrush(QColor(0xCE,0x11,0x26,0xFF))));  
    p->drawEllipse(center,150/2,150/2);  
    return pix;  
}