C++ - gtkmm display both text and image in a ToolButton - c++

I have a toolbar in my Gtkmm application. I am able to add ToolButton that have either text with Gtk::manage(new Gtk::ToolButton("Add")); or an icon, using : button->set_icon_name("document-new").
I have not found any method that ToolButton has to display both the text and the icon. The method available seems to only be available for the Button class, which the class ToolButton doesn't inherit from.
Using button->set_label("Add") afterward also doesn't work. The only thing that is displayed is an icon.
How can I display both text and icon in my ToolButton ?

Related

Display ToolInfo on QT Window Title Bar

I am creating a window using QT with C++. The title of the window is a file name. I want to show(like tool tip) file path whenever I hover the mouse over the window title bar.
How do I do this using QT?
For adding ToolTip to your widgets or buttons you have 2 ways :
if you create your UI from the Designer section :
RightClick in your button or widget and choose Change ToolTip
Then write what you want as ToolTip and also you can change its style by adding cone as HTML
like this :
Create your widget and then use setToolTip function
pushButton = new QPushButton(this);
pushButton->setToolTip(QCoreApplication::translate("MainWindow", "<span style=" font-size:12pt;">This is ToolTip", nullptr));

Difference between QPushButton and QToolButton

I'm new to Qt and the difference between QPushButton and QToolButton is not so clear to me.
I know that a QToolButton is usually used in a QToolBar and it usually shows only an icon, without text, but I don't quite understand the main difference between both.
Does it have any bigger difference?
When should I use QPushButton and when should I use QToolButton?
I would like to know this to use the most appropriate button, and I need to perform some GUI tests and maybe it can be relevant.
QPushButton is simply a button. QToolButton is part of a group of widgets in the QtWidgets module that operate on QActions: QMenu and QToolBar are other examples. As a result, QToolButton is much more complex under the hood than QPushButton.
Some examples of how they are different in practice:
QToolButton is tightly integrated with QAction. Changing the icon, text, or other properties of a tool button's default action is reflected on the button.
You can change the layout of the tool button contents (icon only, text only, text beside icon, text below icon). This is not possible for a QPushButton.
QToolButton supports a "split" button type: a sidebar hot zone opens a menu instead of triggering the default action.
Tool buttons can be created directly in a QToolBar by adding an action. Other widgets must be explicitly added to the toolbar.
A tool button is meant to be displayed in a grid, so it has smaller default internal margins than a push button.
QPushButton is more for "Ok"/"Close" type buttons that contain text with an optional icon.
A QToolButton should generally have an icon.
A QPushButton should always have text.
From Qt doc: http://doc.qt.io/qt-5/qtoolbutton.html#details
"A tool button is a special button that provides quick-access to specific commands or options. As opposed to a normal command button, a tool button usually doesn't show a text label, but shows an icon instead."
When i want a button in the GUI simple with only an icon, I use QToolButton. But when i want a classic button, i use QPushButton.
No big differences,

How to display tooltip on TitleBar

I have a child window derived from CMDIChildWndEx named as CTestTooltipMdiChildWnd, on CTestTooltipMdiChildWnd titlebar, I have drawn a custom icon which is initially disabled.
When user mouse over on this custom icon, I should get a tooltip displayed.
I get rect value of custom icon.
Any input how can I do this.Can anybody suggest any link where tutorial is available to understand.

Get color of highlighted menu item

How can I get default color of a highlighted menu item in qt?
I want to add a multiline menu item such as this. So I created a custom class inherited from QWidgetAction. I want to emulate native look&feel for this menu item. When the widget is under mouse, I need to change it's background color to default background of a highlighted menu item.

Setting and manipulating Icons in QT

I want to add icons in QMainWindow and when i will click that window it should perform some action like popup some window. So what should i use for the icon menu?
You could use the QToolButton class to accomplish this task.
It is possible to set it to only contain an image/icon without text.
l buttons are normally created when new QAction instances are created with QToolBar::addAction() or existing actions are added to a toolbar with QToolBar::addAction(). It is also possible to construct tool buttons in the same way as any other widget, and arrange them alongside other widgets in layouts.
A tool button's icon is set as QIcon. This makes it possible to specify different pixmaps for the disabled and active state. The disabled pixmap is used when the button's functionality is not available. The active pixmap is displayed when the button is auto-raised because the mouse pointer is hovering over it.
The button's look and dimension is adjustable with setToolButtonStyle() and setIconSize(). When used inside a QToolBar in a QMainWindow, the button automatically adjusts to QMainWindow's settings (see QMainWindow::setToolButtonStyle() and QMainWindow::setIconSize()). Instead of an icon, a tool button can also display an arrow symbol, specified with arrowType.
So, you would use these methods:
QAction * QToolBar::addAction(const QIcon & icon, const QString & text)
Creates a new action with the given icon and text. This action is added to the end of the toolbar.
and
toolButtonStyle : Qt::ToolButtonStyle
This property holds whether the tool button displays an icon only, text only, or text beside/below the icon.
The default is Qt::ToolButtonIconOnly.
To have the style of toolbuttons follow the system settings (as available in GNOME and KDE desktop environments), set this property to Qt::ToolButtonFollowStyle.
QToolButton automatically connects this slot to the relevant signal in the QMainWindow in which is resides.
As you can see, the default is icon only.