0
我試圖編譯一個用Qt 4.6編寫的庫。在我目前的Linux機器上,我只安裝了Qt 4.7。下面的代碼部分:在Qt 4.7中強制調用QString(const char *)構造函數
/*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
的確不錯,這就是問題所在。現在在工作,非常感謝。 – madalina