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好的!我现在就知道了!谢谢:)