Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QT-交换图标_Qt_Qpushbutton_Qicon - Fatal编程技术网

QT-交换图标

QT-交换图标,qt,qpushbutton,qicon,Qt,Qpushbutton,Qicon,我制作了一个简单的程序来演示我在尝试使用QIcon swap()函数时遇到的问题。我试图用这个功能交换两个QpushButton上的图标,但它似乎不起作用 主窗口 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QPushButton> namespace Ui { class MainWindow; } class MainWindow : public QMai

我制作了一个简单的程序来演示我在尝试使用QIcon swap()函数时遇到的问题。我试图用这个功能交换两个QpushButton上的图标,但它似乎不起作用

主窗口

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void swap_icons();

private:
    Ui::MainWindow *ui;

    QPushButton *buttons[2];
};

#endif // MAINWINDOW_H

当我按下按钮[0]时,图标不会互换。它们保持不变。

您不设置新图标。我认为应该是这样的:

buttons[0]->setIcon(buttons[0]->icon().swap(buttons[1]->icon()));
但是,这只会更改第一个按钮的图标

我会用更简单的方式写,更容易阅读和理解:

QIcon tmp = buttons[0]->icon();
buttons[0]->setIcon(buttons[1]->icon());
buttons[1]->setIcon(tmp);
QIcon tmp = buttons[0]->icon();
buttons[0]->setIcon(buttons[1]->icon());
buttons[1]->setIcon(tmp);