ふれめも

うむ

QStyledItemDelegateのsizeHintをアイテムごとに変える

ツイッタークライアントをつくっている
各ツイートの情報をQAbstractListModelでリストに入れて、それをQStyledItemDelegateでQListViewに描画することでタイムラインを表示している
このときにデリゲートのsizeHintでリストの各アイテムの大きさの基準を指定できる

いまやってるやつだとツイートの情報(本文とか名前とか)はウィジェットにいれているわけではなくて、painterで描いている
なので、そのままだと各アイテムのサイズがゼロになってつぶれてしまうので、sizeHintにいい感じの大きさを指定する必要がある

なんだけど、ツイートはそれぞれ本文の長さが違うし、改行だってあるし、要するにアイテムひとつひとつの確保したい大きさが違う
だからsizeHintを全部一律で同じ値にはしたくない
ツイートの長さごとに違う大きさを指定しよう

方法:
いったんlabelをつくって、その中にツイートの本文をいれる
setWordWrapをオンにする
labelの幅を指定し、labelをその指定した幅とlabelのsizeHintの高さでresizeする
labelの高さをdelegateにreturnさせる

ArchLinuxをインストールした

最新機種にarchを入れるという酔狂をしてしまったせいで大変苦労した
VAIO Z クラムシェルモデル


USBに入れてブート

loadkeys jp106
lsblk

なんとsdxじゃない(nvme0n1って名前だった)
普通にsdaだと思ってパーティショニングしようとしたらUSBだった


パーティショニングは省略
パーティションはふたつだけ(swapもなし)
UEFIを使うので、先頭はvfatでフォーマット

mkfs.vfat -F32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2
mount /dev/nvme0n1p2 /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot


無線接続してインストール
最近のノートパソコンは有線さすところがついてないのが多い
以前archを入れようとしたら無線デバイスを認識してくれないということがあったから怯えてたんだけど、今回の機種はすんなり認識してくれた

wifi-menu
ping -c 3 www.google.com
vim /etc/pacman.d/mirrorlist
pacstrap -i /mnt base base-devel
genfstab -U -p /mnt >> /mnt/etc/fstab

いままでpacmanのmirrorlistは単にjaistとtsukubaをトップに持ってきてるだけだったんだけど、その他をコメントアウトってのもしておいたほうがよい(ひどい目に遭った)
っていうかvim使えるんだね


chrootで潜ってlocale設定とか

arch-chroot /mnt
vi /etc/locale.gen
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
vi /etc/vconsole.conf
    # KEYMAP=jp106
    # FONT=Lat2-Terminus16
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hwclock -u -w
echo "hostname" > /etc/hostname
passwd


鬼門のブートローダ
nvmeはgrubが未対応のため使えない!(2016/06現在)
代わりにsystemd-bootを使う

pacman -S intel-ucode
mkdir -p /boot/EFI/systemd
mkdir -p /boot/EFI/Boot
cd /usr/lib/systemd/boot/efi
cp systemd-bootx64.efi /boot/EFI/systemd/
cp systemd-bootx64.efi /boot/EFI/Boot/bootx64.efi
mkdir -p /boot/loader/entries
vi /boot/loader/entries/arch.conf
    # title   Arch Linux
    # linux   /vmlinuz-linux
    # initrd  /initramfs-linux.img
    # options root=/dev/nvme0n1p2 rw
mkinitcpio -p linux

####(2016/11/05追記)####
カーネルバージョンが更新され、arch.confのoptionsに
noefiを追加で書いておかないと起動しなくなってしまいました
(メーカーロゴのまま停止して焦った)
参考:
VAIO Z で Arch LinuxとWindows 10をデュアルブートする - Qiita
####


無線用のいろいろを入れて終了

pacman -S wireless_tools wpa_supplicant wpa_actiond dialog net-tools
exit
umount -R /mnt
reboot


あとはユーザを追加して、GUIとか設定すればよい
疲れた