最近はAizu Online Judgeでアルゴリズムの問題はやってましたが、 Qtの使い方の勉強で成果物が全然作ることができず、ブログの更新も全然できませんでした。C++やQtの初歩的なレベルのことは一通りやったので、このへんでなにか作ってみようと思い、Qtでアプリを作りました。
アプリといったも全く大したこともなく役に立つものではありませんが、自分の理解力を高めるためにアップします。
QLineEditで入力した数値をビットフィールドで作ったBits構造体にポインタで渡して、各ボタンのランプが点灯するようにしました。また、各ボタンを押したときには、Bits構造体を反転させるようにしています。
Bits構造体は下記の通り。
struct Bits { int bit0:1; int bit1:1; int bit2:1; int bit3:1; int bit4:1; int bit5:1; int bit6:1; int bit7:1; int bit8:1; int bit9:1; int bit10:1; int bit11:1; int bit12:1; int bit13:1; int bit14:1; int bit15:1; };
ポインタをキャストしてデータを参照しています。
Bits* bits; // Bits オブジェクト int data; // 入力データ data = ui->lineEdit_code->text().toInt(); bits = reinterpret_cast<struct Bits *>(&data);
ボタンを押したときに、 bitを反転させます。ポインタで参照すしているのでbitsを変更すればdataの値も変わります。ボタンをおしたら、QLineEditとボタンに表示します。
void MainWindow::on_pushButton_b0_clicked() { bits->bit0 = ~bits->bit0; setLineData(); displayButtons(); }