【Qt】【QList】リストの中身を取り出す
QListの中の値を取得するにはメソッドat()やオペレーター[]を利用します。
それとは別に、QListの中の値を得て、QListから取り除くきたい。
そんなときはメソッドtakeAt()を用います。
先頭または最後に対して同様の操作をする場合は、
takeFirst(), takeLast()を用います。
以下はリストが空になるまで先頭から順に取り出す例です。
#include <QtCore> void takeAtList() { QList<QString> list; list << "A" << "B" << "C" << "D" << "E" << "F"; while(list.size() > 0) { QString item = list.takeFirst(); qDebug("%s, %d: item=[%s]", __FILE__, __LINE__, qPrintable(item)); } // output "A", "B", "C", "D", "E", "F" }
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
参考
ディレクトリの呼び方
ディレクトリ、いわゆるフォルダの呼び方について。
ディレクトリの下位のディレクトリはサブディレクトリと呼ぶけど、
上位のディレクトリはなんて呼べば良いのだろうと思い調べました。
結果から言うと「親ディレクトリ」で良いようです。
呼称(日本語) | 英語名 | 記号 |
---|---|---|
カレントディレクトリ | Current Directory | . |
親ディレクトリ | Parent Directory | .. |
ホームディレクトリ | Home Directory | ~ |
ルートディレクトリ | Root Directory | C:\ |
区切り文字 | Directory Separator | \ |