c++ - 在 C++ 中使用 qt 显示工具栏中图标的状态

标签 c++ qt qt5 qtoolbar

我想在工具栏中显示图标的状态(它们是否被激活)。例如,当我在Microsoft word 中单击粗体、斜体或下划线图标时,它会变暗,当我再次单击时切换到正常状态。 没有必要遮荫。我只需要区分它是否被激活。

word

最佳答案

您必须检查 QAction,或者使用像 QToolButton 这样可检查的 QWidget:

#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow w;
    QToolBar *toolbar = w.addToolBar("Toolbar");

    QAction *bold_action = toolbar->addAction("B");
    QFont bold_fn(bold_action->font());
    bold_fn.setBold(true);
    bold_action->setFont(bold_fn);
    bold_action->setCheckable(true);

    QAction *italic_action = toolbar->addAction("I");
    QFont fn_cursive(italic_action->font());
    fn_cursive.setItalic(true);
    italic_action->setFont(fn_cursive);
    italic_action->setCheckable(true);

    QAction *underline_action = toolbar->addAction("U");
    QFont fn_underline(underline_action->font());
    fn_underline.setUnderline(true);
    underline_action->setFont(fn_underline);
    underline_action->setCheckable(true);

    QAction* subscript_action = new QAction;
    subscript_action->setIcon(QIcon(":/subscript.png"));
    subscript_action->setCheckable(true); // <---
    toolbar->addAction(subscript_action);

    w.setCentralWidget(new QTextEdit);
    w.resize(320, 240);
    w.show();
    return a.exec();
}

输出:

enter image description here

关于c++ - 在 C++ 中使用 qt 显示工具栏中图标的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55426406/

相关文章:

c++ - G++ Linux 终端中的 <curses.h>;<curse.h>;<conio.h> 问题

c++ - 在 C++ 中使用直接访问文件

linux - 在其他线程正在处理时保持主线程(Qt 应用程序)响应(POSIX)

c++ - 将 .ui 文件添加到 QT 中的现有类

c++ - C++在什么情况下会调用继承类的构造函数失败?

c++ - 从 HCURSOR 获取游标类型

qt - 无法从 MainWindow 显示 QGridLayout 中的小部件

mysql - 如何将 QString 转换为 QDomElement?

c++ - QWidget继承自自定义QWidget

qt5 - 如何避免带有 borderimage 的 QPushButton 的文本剪切