如果您查看 的来源QToolButton::setDefaultAction(QAction* action)
,它setIcon(action->icon())
会根据您给它的操作设置图标。setIcon
您可以在调用后使用所需的单独图标调用来手动覆盖该图标setDefaultAction
。
编辑:
这是一个您可以尝试的快速示例。也许您可以将其与您当前正在做的事情进行比较或发布您自己的示例?
主窗口.cpp
#include "MainWindow.hpp"
#include <QAction>
#include <QToolButton>
MainWindow::MainWindow(QWidget* parent) :
QMainWindow(parent) {
QAction* action = new QAction(QIcon(QStringLiteral("original.jpg")), QStringLiteral("Test Action"), this);
QToolButton* toolButton = new QToolButton(this);
toolButton->setDefaultAction(action);
toolButton->setIcon(QIcon(QStringLiteral("new.jpg")));
}
主窗口.hpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QWidget>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget* parent = nullptr);
};
#endif // MAINWINDOW_H
主文件
#include "MainWindow.hpp"
#include <QApplication>
int main(int argc, char* argv[]) {
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}