Просмотр сообщений
|
Страниц: [1]
|
2
|
Qt / Установка, сборка, отладка, тестирование / Re: Unknown module(s) in QT: charts - как исправить?
|
: Январь 08, 2022, 21:32
|
В итоге поборол сборку файлов Qt5Charts.dll и Qt5Chartsd.dll из исходников. Все папки (bin, examples, include, lib, mkspecs, qml, src, tests) перекинул в папку C:\Qt\5.15.2\msvc2015_64. Дальше всё заработало.
P.S. Ещё надо было прописывать пути к программе rc.exe Добавил в Path следующий путь C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64
|
|
|
6
|
Qt / Установка, сборка, отладка, тестирование / "ABI: x86-windows-unknown-pe-32bit" что за зверь?
|
: Август 03, 2021, 19:24
|
Здравствуйте. Собираю Qt 5.6.3 под Visual Studio 2013 (VC 12.0) Сделал стандартную сборку (shared) и статическую сборку По какой то причине статическая сборка стала "unknown" ABI: x86-windows-unknown-pe-32bit
Если обычную сборку Qt Creater нормально обрабатывает, то второй вариант сборки идет с ошибкой "компилятор не может создавать код для этого профиля qt" В чем может быть ошибка и как её исправить? Спасибо.
|
|
|
9
|
Qt / Вопросы новичков / Qt Creator (Visual Studio 9) - слетают точки останова на одной из функций
|
: Январь 29, 2021, 02:19
|
Здравствуйте.
Пишу проект в Qt Creator под Windows (отладчик Visual Studio 9).
Сегодня поймал странный баг, делаю отладку одной из функций. Корплю над ней пару часов. И при очередном запуске отладчика вижу, что исчезли точки останова над кодом этой функции. При этом другие точки останова работают в других частях проекта. Я даже могу через F10 - вхожу в тело функции нормально.
Пробую кликнуть ЛКМ слева от строчек кода - точки останова не добавляются. Зато точка останова появляется на против следующей функции ниже по коду. Странно.
Пробую кликнуть ПКМ слева от строчек кода - вылезает контектное меню. Нажимаю "Установить точку останова на строку", ничего. Опять вызываю контекстное меню - там появляется пункт "Включить точку останова" - жму этот пункт, и появляется блеклый полупрозрачный кружок. Повторно жму ПКМ и снова выбираю пункт контекстного меню "Включить точку останова" - вот теперь точка останова становиться полноценной (бардового цвета, хотя по F5 на неё всё равно не попасть).
P.S. Проект точно Debug. Пробовал переименовать функцию - странное поведение сохраняется. Воспроизвести странное поведение в других функциях не удается. Удалил тело функции, до вида int foo (const wchar_t*, int) { return 0; } - невозможность установить точку останова продолжается. Разархивировал проект в другом месте. Запустил Qt Creator, настраиваю пути сборки проекта. Запускаю отлалдку - по прежнему немогу установить точку останова только над этой одной функцией.
Может кто сталкивался с подобным поведением? Спасибо.
|
|
|
10
|
Qt / Работа с сетью / Можно ли делать QWebSocket в дочернем потоке?
|
: Январь 29, 2020, 19:58
|
Здравствуйте. Пишу приложение GUI + QWebSocket. Программа принимает большой объем данных по QWebSocket, и видно как GUI тормозит. Чтобы интерфейс пользователя не тормозил, хочу вынести GUI в дочерний поток. В общем, написал тестовый класс Thread. В процессе тестов выяснил, что объект QWebSocket должен создаваться в самом дочернем потоке. В программе не работает webSocket->close(). Программа выкидывает ошибку. Как исправить?thread.h#ifndef THREAD_H #define THREAD_H
#include <QObject> #include <QThread> #include <QtWebSockets/QWebSocket>
class Thread: public QThread { Q_OBJECT public: Thread(); void run(); Q_SIGNALS: void closed();
private Q_SLOTS: void onConnected(); void onRead(QString message); void onClosed();
public: QWebSocket *p_webSocket; };
#endif // THREAD_H
thread.cpp#include "thread.h"
Thread::Thread() : p_webSocket(NULL) {}
void Thread::run() { while(true){ QWebSocket webSocket; // <-- создаю объект тут p_webSocket = &webSocket; connect(p_webSocket, &QWebSocket::connected, this, &Thread::onConnected); connect(p_webSocket, &QWebSocket::disconnected, this, &Thread::onClosed); p_webSocket->open(QUrl("wss://echo.websocket.org/")); exec(); } }
void Thread::onConnected() { qDebug() << "WebSocket connected"; connect(p_webSocket, &QWebSocket::textMessageReceived, this, &Thread::onRead); p_webSocket->sendTextMessage(QStringLiteral("test")); }
void Thread::onRead(QString message) { qDebug() << "Message received:" << message; disconnect(p_webSocket, &QWebSocket::textMessageReceived, this, &Thread::onRead); p_webSocket->close(); // <--- тут происходит ошибка }
void Thread::onClosed() { qDebug() << "onClosed"; }
main.cpp #include <QCoreApplication> #include "thread.h"
int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Thread thread; thread.start(); return a.exec(); }
ОшибкаQSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread QObject::connect: Cannot queue arguments of type 'QAbstractSocket::SocketState' (Make sure 'QAbstractSocket::SocketState' is registered using qRegisterMetaType().) ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 2dd1c48. Receiver '' (of type 'QNativeSocketEngine') was created in thread 9bfed4", file kernel\qcoreapplication.cpp,line 568
Спасибо.
|
|
|
|
|