ウィジェットの基本概念
Qt におけるウィジェットは、GUI フレームワークの基本構成要素です。ボタン、リストビュー、テキストエディタ、スライダーなど、ユーザーインターフェースを構成するすべての要素がウィジェットとして扱われます。Qt Designer で利用可能なコンポーネントはすべて QWidget を基底クラスとして実装されています。
有効/無効状態の管理
ウィジェットの有効状態は、ユーザー入力が可能かどうかを制御します。無効化時はグレーアウト表示され、子要素も同時に無効化されます。
| API | 説明 |
|---|---|
| isEnabled() | 有効状態を取得 |
| setEnabled(bool) | 有効/無効を設定 |
// ボタンを無効化
button->setEnabled(false);
位置・サイズの操作
座標系は左上原点を採用します。geometry() はウィジェット本体の座標を返し、frameGeometry() はウィンドウフレームを含む座標を返します。
| API | 説明 |
|---|---|
| geometry() | ウィジェット本体の位置/サイズ取得 |
| setGeometry(int, int, int, int) | 位置とサイズを設定 |
// 位置を移動(サイズは維持)
mainWidget->setGeometry(50, 50, mainWidget->width(), mainWidget->height());
ウィンドウタイトルとアイコン
タイトルとアイコンはトップレベルウィンドウにのみ適用可能です。
| API | 説明 |
|---|---|
| setWindowTitle(QString) | タイトル設定 |
| setWindowIcon(QIcon) | アイコン設定 |
// リソースファイルからアイコンをロード
QIcon icon(":/icons/app_icon");
setWindowIcon(icon);
透過度とカーソル設定
透過度は 0.0(完全透明)~ 1.0(完全不透明)の範囲で指定します。
// 透過度を0.1ずつ変更
void toggleTransparency() {
float current = windowOpacity();
setWindowOpacity(current + 0.1 > 1.0 ? 1.0 : current + 0.1);
}
スタイルシートによるカスタムデザイン
QSS で CSS 形式のスタイルを適用できます。
// ダークモード切替
void toggleDarkMode() {
if (isDarkMode) {
setStyleSheet("background: #333; color: #fff;");
} else {
setStyleSheet("background: #fff; color: #000;");
}
}
フォーカスポリシーの設定
フォーカス取得方法を制御します。
| 値 | 説明 |
|---|---|
| Qt::StrongFocus | Tabキーとマウスクリックで取得 |
| Qt::ClickFocus | マウスクリックのみ |
// テキストエディタにフォーカスを設定
textEdit->setFocusPolicy(Qt::StrongFocus);