Qtで高速でウィジェットを切り替えるには?

今回は、同じ場所に設置されているウィジェットを切り替える方法を紹介します。 QStackedWidget *stack = new QStackedWidget(this); stack->addWidget(page1); stack->addWidget(page2); stack->addWidget(page3); // 切り替え stack->setCurrentIndex(1); QStackedWidgetを使えば、簡単に切り替えできます。 しかも、メモリにもCPUにも優しいです。

2026年1月14日

QtのQPushButtonにJSのホバーみたいなイベントを実装するには?

シグナルでのJSのホバーイベントみたいなやつはなかったようなので、 以下の方法で、JSのmouseenter、mouseoverみたいなやつを実装します。 結論 : サブクラスでオーバーライド class HoverButton : public QPushButton { Q_OBJECT public: using QPushButton::QPushButton; protected: void enterEvent(QEnterEvent* event) override { qDebug() << "hover enter"; QPushButton::enterEvent(event); } void leaveEvent(QEvent* event) override { qDebug() << "hover leave"; QPushButton::leaveEvent(event); } }; おまけ : シグナル付き ホバーの実装例 : class HoverButton : public QPushButton { Q_OBJECT public: using QPushButton::QPushButton; protected: void enterEvent(QEnterEvent* event) override { emit mouseEnter(); QPushButton::enterEvent(event); } void leaveEvent(QEvent* event) override { emit mouseOver(); QPushButton::leaveEvent(event); } signals: void mouseEnter(); void mouseOver(); }; 接続、connect例 : ...

2026年1月13日

Qt6のQPushButtonとデータを結びつけるには?

今回は例として、enumの値を代入します。 設定の例 enum class ActionType { Open, Save, Close }; QPushButton* btn = new QPushButton("Open"); // enum → int にして保存 btn->setProperty("action", static_cast<int>(ActionType::Open)); 取得の例 void MainWindow::onButtonClicked() { QPushButton* btn = qobject_cast<QPushButton*>(sender()); if (!btn) return; ActionType action = static_cast<ActionType>(btn->property("action").toInt()); switch (action) { case ActionType::Open: qDebug() << "Open"; break; case ActionType::Save: qDebug() << "Save"; break; case ActionType::Close: qDebug() << "Close"; break; } } シグナルの接続 connect(btn, &QPushButton::clicked, this, &MainWindow::onButtonClicked);

2026年1月13日

UbuntuでBluetoothイヤホンの接続不良になった時の対処法

接続不良が生じたので、接続プロファイルを一回削除したら、再ペアリングが不可能になった時の対処法。 ターミナルで以下のコマンドを実行 このコマンドは接続プロファイルをすべて削除するので注意! sudo systemctl stop bluetooth sudo rm -rf /var/lib/bluetooth/* sudo systemctl start bluetooth 原因としては、接続プロファイルが存在する部分と、存在しない部分で矛盾が生じて、接続できてなかったようです。

2026年1月12日

Qt6のQSliderで100%に吸着させるには?

1. 準備 QSlider *slider = new QSlider(Qt::Horizontal); slider->setRange(-1000, 1000); slider->setValue(0); 2. 実装 connect(slider, &QSlider::sliderReleased, this, [slider]() { if (std::abs(slider->value()) < 30) slider->setValue(0); });

2026年1月8日

Qt6のQSliderで対数スケールを行うには?

実装例 今回はズーム(%)のスライダーを想定した例です。 10~800%まで対応 1. スライダー設定 QSlider *slider = new QSlider(Qt::Horizontal); slider->setRange(-1000, 1000); slider->setValue(0); // 中央 = 100% slider->setSingleStep(1); slider->setPageStep(50); 2. 対数変換関数 static double sliderToZoom(int v) { // v=-1000 → 0.1 // v=0 → 1.0 // v=1000 → 8.0 const double minZoom = 0.1; const double maxZoom = 8.0; if (v >= 0) { return std::pow(maxZoom, v / 1000.0); } else { return std::pow(minZoom, -v / 1000.0); } } 3. 表示(%)に変換 connect(slider, &QSlider::valueChanged, this, [label](int v) { double zoom = sliderToZoom(v); int percent = qRound(zoom * 100); label->setText(QString("%1%").arg(percent)); });

2026年1月8日

Hugo+PaperMODでセクションのタイトルを変更するには?

_index.md を作ってタイトルを指定する content/section/ に _index.md を作成します。 content/ └─ section/ └─ _index.md 中身: --- title: "セクションのタイトル" --- 要約文や説明文もここに書けます

2026年1月8日

/var/www/htmlの権限を調整する

sudo chown -R shono:www-data /var/www/html sudo chmod -R 755 /var/www/html 一度777に権限を書き換えてしまったことがあるので、これで修正した。 書き込み権限を接収したいときは、755から655にすればいいでしょう。

2026年1月8日

Qtでセパレーター(Separater)を作成するには?

QLabel *separater = new QLabel; separater->setFixedWidth(1); separater->setStyleSheet("background-color: #888; margin-left: 4px; margin-right: 4px;"); ...

2026年1月7日

.desktopファイルでドックバーにアイコンを表示するようにする

結論 WM_CLASSの設定 1. .desktop側の設定の例 [Desktop Entry] Type=Application Name=MyApp Exec=/path/to/myapp Icon=myapp StartupWMClass=myapp 2. 実行中アプリのWM_CLASSを確認する xprop WM_CLASS これを実行してから、確認したいウィンドウをクリック 出力例: WM_CLASS(STRING) = "myapp", "MyApp" この場合は、 StartupWMClass=MyApp とか StartupWMClass=myapp

2026年1月7日