2014-11-11 2 views
0

У меня есть заголовочный файл со следующим включают:Qt 5.2 не может получить функцию qWait работать

#include <QtTest/QtTest> 

Я пытаюсь использовать следующую строку, чтобы сгенерировать нелипкое ожидание в моем главном окне:

QTest::qWait(1000 - ui->speedDial->value()); 

Я получаю следующее сообщение об ошибке:

mainwindow.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl QTest::qSleep(int)" ([email protected]@@[email protected]) referenced in function "void __cdecl QTest::qWait(int)" ([email protected]@@[email protected])

Может кто-нибудь помочь мне понять, что я делаю неправильно, или предоставить альтернативный метод? Эти строки не зависят от другого кода.

+1

Вы добавили 'QT + = testlib' в вашем файле '* .pro'? Если нет, добавьте его, запустите 'qmake' снова и перестройте. – Iuliu

+0

Я не так хорошо знаком с файлами make, как должен; что, следуя вашим указаниям, я имею несколько предупреждений. Программа по-прежнему не компилируется. Что я сделал не так? –

+0

Не могли бы вы увидеть мой ответ? Я опубликовал пример, в котором 'qWait' работает нормально. Вы можете взять его в качестве примера и сравнить с вашим кодом, чтобы узнать, чем он отличается. Можете ли вы также опубликовать часть кода? Это поможет мне понять это, поскольку этот простой пример Qt работает без какой-либо специальной модификации. – Iuliu

ответ

0

Это прекрасно работает для меня. Проверьте этот пример, который представляет собой модифицированную версию Qt Test official documentation example:

tutorial1.pro:

SOURCES = testqstring.cpp 
CONFIG += qtestlib 

# install 
target.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial1 
sources.files = $$SOURCES *.pro 
sources.path = $$[QT_INSTALL_EXAMPLES]/qtestlib/tutorial1 
INSTALLS += target sources 

symbian { 
    TARGET.UID3 = 0xA000C60B 
    include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) 
} 
maemo5: include($$QT_SOURCE_TREE/examples/maemo5pkgrules.pri) 

symbian: warning(This example might not fully work on Symbian platform) 
maemo5: warning(This example might not fully work on Maemo platform) 
simulator: warning(This example might not fully work on Simulator platform) 

testqstring.cpp:

#include <QtTest/QtTest> 
#include <QDebug> 

class TestQString: public QObject 
{ 
    Q_OBJECT 
private slots: 
    void toUpper(); 
}; 

void TestQString::toUpper() 
{ 
    QString str = "Hello"; 

    QTest::qWait(2000); 

    QCOMPARE(str.toUpper(), QString("HELLO")); 
} 

QTEST_MAIN(TestQString) 
#include "testqstring.moc"