C++ 从';转换的功能样式没有匹配转换;常量QString';至';QTreeWidgetItem';

C++ 从';转换的功能样式没有匹配转换;常量QString';至';QTreeWidgetItem';,c++,c++11,qtreewidget,qtreewidgetitem,C++,C++11,Qtreewidget,Qtreewidgetitem,我正在使用QTreeWidgetItem和QTreeWidgetItem构建一个小应用程序,用于练习它们,以及练习如何最好地使用它们以及在何处使用它们。这是一个小应用程序,我试图使用助手函数将图标分配给QTreeWidget。 现在由于某些原因,我得到了以下错误: 从'const QString'转换为'QTreeWidgetItem'的函数样式转换没有匹配的转换, 代码如下: main window.h class MainWindow : public QMainWindow { Q

我正在使用
QTreeWidgetItem
QTreeWidgetItem
构建一个小应用程序,用于练习它们,以及练习如何最好地使用它们以及在何处使用它们。这是一个小应用程序,我试图使用助手函数将图标分配给
QTreeWidget
。 现在由于某些原因,我得到了以下错误:

从'const QString'转换为'QTreeWidgetItem'的函数样式转换没有匹配的转换
, 代码如下:

main window.h

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    QTreeWidgetItem *createItem(const QString &name, const QString &iconPath);

    QString name() const {
        return m_Name;
    }

    QString iconPath() const {
        return m_Path;
    }

    void setName(const QString &name)
    {
        m_Name = name;
    }

    void setPath(const QString &path)
    {
        m_Path = path;
    }

private:
    Ui::MainWindow *ui;
    QString m_Name;
    QString m_Path;
};
main window.cpp

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    auto *top1 = createItem("Images", "/path/to/icon.png");
    auto *top2 = createItem("Path", "/path/to/icon.png");
    top1->addChild(createItem("Original", "/path/to/icon.png"));
    top1->addChild(createItem("Sample", "/path/to/icon.png"));
    
    top2->addChild(createItem("Left Side", "/path/to/icon.png"));
    top2->addChild(createItem("Right Side", "/path/to/icon.png"));

    ui->treeWidget->addTopLevelItems({ top1, top2 });
}

MainWindow::~MainWindow()
{
    delete ui;
}


QTreeWidgetItem *MainWindow::createItem(const QString &name, const QString &iconPath)
{
    auto *item = QTreeWidgetItem(name);  // <-- Error Here
    item.setIcon(0, QIcon(iconPath));
    return item;
}
MainWindow::MainWindow(QWidget*父项)
:QMainWindow(父级)
,ui(新ui::Main窗口)
{
用户界面->设置用户界面(此);
auto*top1=createItem(“Images”,“/path/to/icon.png”);
auto*top2=createItem(“Path”,“/Path/to/icon.png”);
top1->addChild(createItem(“Original”和“/path/to/icon.png”);
top1->addChild(createItem(“Sample”,“path/to/icon.png”);
top2->addChild(createItem(“Left Side”,“/path/to/icon.png”);
top2->addChild(createItem(“Right Side”,“/path/to/icon.png”);
ui->treeWidget->addTopLevelItems({top1,top2});
}
MainWindow::~MainWindow()
{
删除用户界面;
}
QTreeWidgetItem*MainWindow::createItem(常量QString&name,常量QString&iconPath)
{

auto*item=QTreeWidgetItem(name);//确实存在需要
QString
。使用
QTreeWidgetItem(name)
,您想要实现什么?您可能正在寻找
auto*item=new QTreeWidgetItem({name});
(这使用了一个采用
QStringList
的构造函数)。另外,由于
item
是一个指针,请将其设置为
item->setIcon(…)
感谢您的timr@IgorTandetnik它可以工作!:)我可以请您澄清
QTreeWidgetItem(name)
QTreeWidgetItem({name})之间的区别吗
?如果您想正式回答这个问题,我可以接受!谢谢您的时间!非常感谢!后者是
QTreeWidgetItem(QStringList{name})的缩写。
Ohhh好的!我现在就知道了!谢谢:)