2017-10-25 10 views
-2

私はこの問題をかなりの間苦労しています。残念なことに、自分自身の推論もGoogle検索も私を助けませんでした。簡単に言うと、QSqlErrorクラスでnativeErrorCode()関数を使用しようとしています。コンパイラ:mainwindow.cpp:43:86:error: 'class QSqlError'に 'nativeErrorCode'という名前のメンバがありません。これは、(2本のライン、正確には)参照ラインである:クラスQSqlErrorにはメンバーがありませんnativeErrorCode()

errorCreatingBooksTableMessageBox.setDetailedText((query.lastError().nativeErrorCode().isEmpty()) ? 
       query.lastError().text() : query.lastError().nativeErrorCode() + "\n" + query.lastError().text()); 

問題は些細なようだが、私は自分自身で答えを見つけることができません。 #includeはmainwindow.hファイルにあります。いくつかの研究の後で、他のフォーラムの他の人が、コンパイラが間違ったバージョンのヘッダファイルを使用していることに気付きました。これは、関数nativeErrorCode()がQt5に導入されて以来、私はqt4フォルダをごみ箱に移動しようとしましたが、それでも効果はありません。どんな助けもお約束します

答えて

0

私はこの問題が発生するOSがわかりません。しかし、Linux OS Imageの大部分では、Qt4でプレビルドしています。さらに、Qt5ライブラリを構築しても、システム環境は古いQt4ライブラリを使用してファイルを生成することがあります。 Qt5をソースコードから構築する場合、これは非常に一般的です。したがって、Qt5のパスからqmakeを実行するとよいでしょう。したがって、メイクファイルが作成され、Qt5ライブラリ用にビルドされます。

確認するために、のMakefileを開き、変数qmakeはがQt5またはQt4をライブラリに参照のうえさを確認してください。

私はこのことから「qmakeの= /home/user1/Qt5.6.0/5.6/gcc_64/bin/qmake」、ご参考のために私のシステムからこれを更新しています、MakefileのはQt5ライブラリを使用していることは明らかであるとさらにコンパイルすると、Qt5ライブラリが私のアプリケーションソースコードをコンパイルするために使われます。

+0

QMAKE =/usr/lib/i386-linux-gnu/qt5/bin/qmake –

+0

この場合、Qt5を使用していますが、#をインクルードしましたか? – Ashif

+0

私はそう信じています:// –

関連する問題