Просмотр сообщений
|
Страниц: 1 2 3 [4] 5 6 ... 32
|
47
|
Qt / 2D и 3D графика / Re: QQOpenGLWidget (Qt5.5.0, win32, mingw) + QPainter::drawLine = bug?
|
: Октябрь 15, 2015, 15:22
|
Qt 5.5.0, Windows 7, MSVC 2015: не собралось из-за строчки glEnable(GL_MULTISAMPLE);
Закомментировал, собралось и вроде как работает. С одной лишь разницей - линия справа более толстая (на 1-2 пикселя), чем слева. Если значение в комбобоксе меньше 3 - линия слева вообще не видна.
Но - это конкретно на этой машине с конкретной видеокартой. С другими могут быть другие проблемы (например, как у вас).
Там в приложении можно с зажатой мышкой вьюпорт двигать, по умолчанию не видно проблемного участка. Попробуйте всю кривую проследить с толщиной линии 3 и 4.
|
|
|
48
|
Qt / 2D и 3D графика / QQOpenGLWidget (Qt5.5.0, win32, mingw) + QPainter::drawLine = bug?
|
: Октябрь 15, 2015, 14:56
|
Доброго времени суток.
Есть приложение, написанное на Qt, версия 5.5.0, пробовал так же на свежей 5.5.1 и 5.4.2 (своя картография, основанная на тайлах). Рисование происходит в методе paintGL(), без использования нативных OpenGL вызовов, только QPainter. И вот в один прекрасный момент понадобилось на карте рисовать линии, для чего, не мудрствуя лукаво, был выбран QPainterPath + QPainter::drawPath. Но оказалось, что при рисовании некоторые линии вообще не рисуются, некоторые рисуются с не той толщиной линии, что задана в параметрах QPen. При замене drawPath на drawLine ситуация не изменилась.
Для демонстрации написал небольшое приложение, воспроизводящее баг (два виджета, один паинтер, при использовании обычного QWidget бага нет). Приложение во вложении. Может есть какие пути решения этой проблемы без отказа от QOpenGLWidget, ибо реально разница в скорости значительная по сравнению с QWidget, может надо какие-то дополнительные телодвижения перед отрисовкой делать?
|
|
|
49
|
Qt / Установка, сборка, отладка, тестирование / Re: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt
|
: Сентябрь 06, 2015, 23:24
|
Кто это вам сказал?
Да собственно практика показала... У меня прога, передающая/принимающая данные по https протоколу не работает, а у товарища всё ок. Советы типа "добавьте пару dll файлов из openssl" не помогли, поэтому решили, что нужно собирать. Ух ты, точно, Qt5.5.0 без ssl из коробки идёт... Qt4.8 - поддержка ssl из коробки.
|
|
|
51
|
Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
|
: Август 25, 2015, 21:46
|
Qt 5.5 UTF-8 Window7 Как получить читабельный вывод? C++ (Qt) QSerialPort serialPort(QString("")); if (!serialPort.open(QSerialPort::ReadWrite)) qDebug() << serialPort.error() << serialPort.errorString();
Вывод: 11 "\u0421\u0438\u0441\u0442\u0435\u043C\u0435 \u043D\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044F \u043D\u0430\u0439\u0442\u0438 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u0439 \u043F\u0443\u0442\u044C." C++ (Qt) qDebug() << serialPort.error() << serialPort.errorString().toUtf8().data();
Примерно так.
|
|
|
53
|
Qt / Общие вопросы / Re: Как реализовать консольную командную строку в QT используя стандартные потоки ?
|
: Август 05, 2015, 18:55
|
C чего это мы глушим приложение, работая с stdin в отдельном потоке? C++ (Qt) #include <QCoreApplication> #include <QDebug> #include <QThread> #include <QTimer> #include <QTime> #include <QFile> class StdInWorker : public QObject { Q_OBJECT public: StdInWorker() : mStdInStream(stdin) { } virtual ~StdInWorker() { qDebug() << Q_FUNC_INFO; } Q_INVOKABLE void startRead() { while (true) { QString data = mStdInStream.readLine(); if (data == "quit") { qApp->quit(); break; } if (data.length()){ emit dataReceived(data); } } } signals: void dataReceived(QString data); private: QTextStream mStdInStream; }; class Main : public QObject { Q_OBJECT public: Main() : mWorker(new StdInWorker) { mWorker->moveToThread(&mThread); mThread.start(); connect(mWorker, SIGNAL(dataReceived(QString)), this, SLOT(onIncomingData(QString)), Qt::QueuedConnection); } virtual ~Main() { QMetaObject::invokeMethod(mWorker, "deleteLater", Qt::QueuedConnection); mThread.quit(); mThread.wait(); } void start() { QMetaObject::invokeMethod(mWorker, "startRead", Qt::QueuedConnection); QTimer *t = new QTimer(this); connect(t, SIGNAL(timeout()), this, SLOT(onTimeout())); mTime.start(); t->start(1000); } public slots: void onTimeout() { qDebug() << "elapsed" << mTime.elapsed(); } void onIncomingData(QString data) { qDebug() << "from stdin:" << data; } private: QThread mThread; QTime mTime; StdInWorker *mWorker; }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Main m; m.start(); return a.exec(); } #include "main.moc"
|
|
|
54
|
Qt / Qt-инструментарий / Re: qbs DEFINES +=
|
: Август 02, 2015, 21:00
|
Потому что проперти, заданные в группе, применяются только к файлам в этой группе:) Это тоже написано в доке (хотя сам узнал буквально вчера)
А есть ли решение моей задачи путём, отличным от этого?
|
|
|
55
|
Qt / Qt-инструментарий / Re: qbs DEFINES +=
|
: Август 02, 2015, 12:47
|
Группы же работают как if () if () if()
да, только с группами не работает (или работает не так, как ожидается) такой код: Javascript Group { condition: def3 == true cpp.defines: outer.concat([ "DEF3" ]) }
К глобальным дефайнам DEF3 не добавляется
|
|
|
58
|
Qt / Qt-инструментарий / Re: qbs DEFINES +=
|
: Июль 30, 2015, 13:14
|
Фиг. Properties затирает пердыдущее значение cpp.defines. Сделал пока по своему первому варианту, может потом что еще придумаю. с qmake подобное совсем просто делалось: CONFIG += MODULE1 MODULE2 MODULE3
MODULE1 { DEFINES += MODULE1 HEADERS += module1.h SOURCES+= module1.cpp }
MODULE2 { DEFINES += MODULE2 HEADERS += module2.h SOURCES+= module2.cpp }
MODULE3 { DEFINES += MODULE3 HEADERS += module3.h SOURCES+= module3.cpp }
Хочется чего-то подобного...
|
|
|
59
|
Qt / Qt-инструментарий / Re: qbs DEFINES +=
|
: Июль 30, 2015, 12:13
|
Неполная магия Javascript import qbs CppApplication { type: "application" // To suppress bundle generation on Mac consoleApplication: true property bool def3: true property bool def4: true cpp.staticLibraries: ["stdc++"] files: ["main.cpp"] cpp.defines: ["DEF1", "DEF2"] Properties { condition: def3 == true cpp.defines: outer.concat([ "DEF3" ]) } Properties { condition: def4 == true cpp.defines: outer.concat([ "DEF4" ]) } Group { // Properties for the produced executable fileTagsFilter: product.type qbs.install: true } }
Добавляется только один из дефайнов
|
|
|
60
|
Qt / Qt-инструментарий / Re: qbs DEFINES +=
|
: Июль 30, 2015, 11:30
|
Properties { condition: def3 == true cpp.defines: outer.concat([ "DEF3" ]) }
Вот же магия, спасибо! Я почему то вместо outer пытался base использовать...
|
|
|
|
|