Qt Designer を使用して QMenu にアイコンを追加しようとしていますが、アイコンを追加するとテキストが消えることに気付きました。テキストの横にアイコンを表示する方法はありますか?
2 に答える
Qt 4 ではサポートされていませんでした。おそらく Qt5 では確認していません。Designer 自体では、できることはあまりありません。コードの 1 つのオプションは、スタイルをカスタマイズしてアイコンとテキストの両方を描画することです。 - QStyle::CT_MenuBarItem の sizeFromContents - QStyle::CE_MenuBarItem の drawControl - QStyleOptionMenuItem の drawCustomControl
これはデフォルトではサポートされていません。これは主に、ここで実現したい操作ではないためです。もちろん、テキストを含む画像をいつでも使用できますが、画像を動的にペイントして後でロードしない限り、これもハックです。それでもかなりの作業になりますが。
そのためには、Qt を少しいじる必要があります。これは、私が個人的に始める最も近い実験です。実際に機能するかどうかを確認する時間はありませんでしたが、次の行に何かがあるはずです。
class CustomMenuBarWidget : public QWidget
{
public:
explicit CustomMenuBarWidget(QWidget *parent = Q_NULLPTR)
: QWidget(parent)
, menuBar(new QMenuBar())
{
}
virtual void paintEvent(QPaintEvent *event) {
QStyleOptionMenuItem styleOptionMenuItem;
QIcon icon("path/to/my/icon");
styleOptionMenuItem.icon = icon;
styleOptionMenuItem.text = "Hello World!";
QPainter painter(this);
menuBar->style()->drawControl(QStyle::CE_MenuBarItem, &styleOptionMenuItem, &painter, menuBar);
}
private:
QMenuBar *menuBar;
};
カスタム ウィジェットをツールバーやメニューバーに挿入する方法については、QWidgetActionを参照してください。私自身、重大なプロジェクトでそれを使用したことはありませんが、知っておくと役立つ場合があります。