我正在尝试编译一个用 Qt 4.6 编写的库。在我当前的 Linux 机器上,我只安装了 Qt 4.7。以下代码部分:
/*file try.h*/
void fileOpen(QString s = NULL) ;
/*file try.cpp*/
void MainWindow::fileOpen(QString s) {
QString filename ;
if(s.isNull()) filename = QFileDialog::getOpenFileName(
this,
"Choose a file",
".",
"Source file (*.)");
else filename = s ;
}
编译时出现以下错误(我使用了 cmake,但相应的行代码是上面列出的行代码):
In member function ‘virtual int MainWindow::qt_metacall(QMetaObject::Call, int,
void**)’:
/homes/combi/hodorog/Developments/axelOld/build/axel/src/QGui/moc_MainWindow.cxx:141:26:
error: conversion from ‘long int’ to ‘QString’ is ambiguous
/homes/combi/hodorog/Developments/axelOld/build/axel/src/QGui/moc_MainWindow.cxx:141:26:
note: candidates are:
/usr/include/QtCore/qstring.h:426:43: note: QString::QString(const char*)
/usr/include/QtCore/qstring.h:105:14: note: QString::QString(const QChar*)
所以我猜问题出在qt中。4.7. 有两个 QString 构造函数可以将指针作为参数(如编译错误中所列),而在 qt 4.6 中。只有一个 QString 构造函数可以将指针作为参数。如何强制 QString 以 const char * 作为参数调用构造函数?
非常感谢您提前提供的帮助,madalina