MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Qtのコントロール - タブのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Qtのコントロール - タブ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Qtにおいて、<code>QTabWidget</code>クラスを使用してタブをコントロールする手順を記載する。<br> <br><br> == タブ幅を揃える(等幅にする) == タブを追加すると、タブに表示するテキストの文字列長に応じて、自動的にタブ幅が調整される。<br> 全てのタブ幅を等幅にするには、<code>QTabBar::tabSizeHint</code>メソッドをオーバーライドして、適切な<code>QSize</code>クラスを指定することで実現できる。<br> <br> <code>QTabBar</code>クラスを継承した派生クラスを<code>QTabWidget</code>クラスに設定するには、<code>QTabWidget::setTabBar</code>メソッドを使用すればよいが、<br> <code>QTabWidget::setTabBar</code>メソッドは<code>protected</code>であるため、<code>QTabWidget</code>クラスを継承した派生クラスも作成する必要がある。<br> <br> 以下の例では、<code>QTabBar</code>クラスを継承したQTabBarExクラス、<code>QTabWidget</code>クラスを継承したQTabWidgetExクラスを作成している。<br> <u>また、Qt Designerにおいて、タブコントロールを右クリックして[格上げ先を指定]を選択後、QTabWidgetExクラスに格上げすること。</u><br> <syntaxhighlight lang="c++"> // MainWindow.cpp #include "MainWindow.h" #include "ui_MainWindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // MainWindow.h #pragma once #include <QMainWindow> namespace Ui {class MainWindow;} class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; }; </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // QTabBarEx.cpp QTabBarEx::QTabBarEx(QWidget *parent) : QTabBar(parent) { } QSize QTabBarEx::tabSizeHint(int index) const { QSize size = QTabBar::tabSizeHint(index); // QSizeクラスのコンストラクタの第1引数がタブ幅、第2引数がタブの高さとなる return QSize(100, size.height()); } </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // QTabBarEx.h #pragma once #include <QTabBar> class QTabBarEx : public QTabBar { public: explicit QTabBarEx(QWidget *parent = Q_NULLPTR); ~QTabBarEx() override {} protected: QSize tabSizeHint(int) const override; }; </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // QTabWidgetEx.cpp #include <memory> #include "QTabWidgetEx.h" QTabWidgetEx::QTabWidgetEx(QWidget *parent) : QTabWidget(parent) { std::unique_ptr<QTabBarEx> newTabBar = std::make_unique<QTabBarEx>(this); // QTabWidgetのソースコード(qtabwidget.cppファイルの237〜238行目)を参考にしている newTabBar->setObjectName(QLatin1String("qt_tabwidget_tabbar")); newTabBar->setDrawBase(false); setTabBar(newTabBar); } </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // QTabWidgetEx.h #include <QTabWidget> #include "QTabBarEx.h" class QTabWidgetEx : public QTabWidget { public: explicit QTabWidgetEx(QWidget *parent = Q_NULLPTR); ~QTabWidgetEx() {} }; </syntaxhighlight> <br><br> == 任意のタブに閉じるボタンを表示しない == 全てのタブに[閉じる]ボタンを表示する場合、以下の2つの方法がある。<br> * Qt Designerで設定する場合 *: プロパティ[tabsClosable]にチェックを入力する。 * ソースコードで設定する場合 *: 以下のように記述する。 *: <code>ui->tabWidget->setTabsClosable(true);</code> <br> <u>任意のタブに[閉じる]ボタンを表示しない場合</u>、ソースコードに以下を記述する。<br> <code>setTabButton</code>メソッドの第1引数には、タブのインデックス(0オリジン)を指定する。<br> <syntaxhighlight lang="c++"> QTabBar *tabBar = ui->tabWidget->tabBar(); tabBar->setTabButton(0, static_cast<QTabBar::ButtonPosition>(tabBar->style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, nullptr, tabBar)), nullptr); </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:Qt]]
Qtのコントロール - タブ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse