Russian Qt Forum
Май 12, 2024, 07:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 2 3 [4] 5 6 ... 32
46  Qt / 2D и 3D графика / Re: QQOpenGLWidget (Qt5.5.0, win32, mingw) + QPainter::drawLine = bug? : Октябрь 15, 2015, 16:15
Поигрался еще с проблемой.

Дело в QPainter::translate.

перед рисованием делаю tanslate на QPoint(-42336200,-18989600) для паинтера - и вылезает данное поведение.
А если делать translate не для паинтера, а для QPainterPath, то рисуется всё нормально. Такие дела, явный баг.
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 из коробки.
50  Qt / Установка, сборка, отладка, тестирование / Re: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt : Сентябрь 06, 2015, 17:50
Моя ключевая цель - это сборка с openssl, ибо установщики Qt её по умолчанию не имеют
Кто это вам сказал?
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();
 
Примерно так.
52  Qt / Вопросы новичков / Re: Как заполнять QLineEdit по умолчанию нулями? (PyQt) : Август 14, 2015, 08:02
Код
C++ (Qt)
QString value = lineEdit->text().isEmpty() ? QString("0") : lineEdit->text();
?
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 не добавляется Грустный
56  Qt / Общие вопросы / Re: Как нарисовать OpenStreetMap в offline : Август 01, 2015, 00:12
писали, что в Qt Location они добавят работу с оффлайновыми картами
Вроде как с тайловыми. А тут большой разницы нет, тайловые карты реализовать - ну день работы.
57  Qt / Model-View (MV) / Re: Биндинг на 1 элемент модели : Июль 31, 2015, 14:52
Код
C++ (Qt)
QModelIndex QAbstractItemModel::index ( int row, int column, const QModelIndex & parent = QModelIndex() ) const [pure virtual]
 
?
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 использовать...
Страниц: 1 2 3 [4] 5 6 ... 32

Страница сгенерирована за 0.152 секунд. Запросов: 23.