LINUX.ORG.RU

Сообщения user2132

 

qt прога падает при подключении по rdp

Форум — Development

На компе запущена qt прога, которую просто запускают, она ничего не делает, просто окно открыто. Когда по rdp подключаются то иногда падает. Что тут может быть, где искать багу. И вообще это прога или чет с осью ?

 , ,

user2132
()

Как отключить запись логов в /var/log/journal ?

Форум — Linux-hardware

На Beaglebone ось ангстром установлена. Пишет логи в /var/log/journal и к вечеру забивает все свободные 20 мб, после этого ломается ssh и приходится очищать логи. Как вырубить их. systemctl disable rsyslog говорит file not found.

 , ,

user2132
()

QTableWidget как настроить select ячеек по столбцам с shift-ом зажатым ?

Форум — Development

У меня QTableWidget, в которой нужно выделять ячейки по столбцам, а не по строкам, как настроено в qt по умолчанию. Делаю так:

ui->table>setSelectionMode(QAbstractItemView::ExtendedSelection);

После этой настройки выделяются ячейки по строкам. А мне надо, чтобы когда щелкают в ячейку первого столбика, а потом с зажатым shift во второй столбик, чтобы выполнилися select от первой ячейки до конца вниз и во втором столбике от вверха до второй ячейки. Можно ли как-то это настройками выставить. Если ручками только через setSelected, то как отрубить автоматический select по клику, потому что придется еще делать deselect не нужных ячеек из-за него.

 ,

user2132
()

QRegExp не работает

Форум — Development

Хочу регуляркой считать из файла числа. Из файла

    Average: 
    Z  1: 0.0400665
    Z  2: -0.0789776
    Z  3: -0.185088
    Z  4: 0.0174681
    Z  5: 0.0344385
    Z  6: 0.0488381
    Z  7: -0.0290117
    Z  8: -0.0167767
    Z  9: 0.187083
    Z 10: 0.232811
    Z 11: 0.219002
    Z 12: 0.082035
    Z 13: 0.233757
    Z 14: 0.167059
    Z 15: 0.188123
    Z 16: 0.137755
    Z 17: -0.00718205
    Z 18: -0.0548681
    Z 19: 0.0604202

QString line = file.readAll(); QRegExp reg_exp; reg_exp.setPattern(«Average:\s+[\s\S]*?Z\s+1:\s+(\S+)»);

qDebug() << «patern» << reg_exp.pattern() << «valid» << reg_exp.isValid();

    if(reg_exp.indexIn(line) != -1)
    {
        QString Z_val = reg_exp.cap(1);

        qDebug() << "i" << i << "Z_val" << Z_val;
    }
    else
    {
        qDebug() << "failed parse Z";
    }

Вывод:

patern «Average:\s+[\s\S]*?Z\s+1:\s+(\S+)» valid false failed parse Z

Подскажите где ошибка, почему это не работает. Пытаюсь считать первое число из файла.

 , ,

user2132
()

qtextstream падает при записи большого массива байт.

Форум — Development

[code] QByteArray ans = file2.readAll(); //тут все ок

QFile data(«output.txt»); if (data.open(QFile::WriteOnly | QFile::Truncate)) {

QTextStream out(&data);

out << "Result: " << ans.toHex(); //тут падает bad alloc

} [/code] Из бинарного файла читаю большой массив байт, хочу записать в виде текста в другой файл. Получаю bad alloc крэш. Можно ли как-то обойти это без записи частями.

 , ,

user2132
()

Крякозябры в записываемом файле из qt.

Форум — Development

Нужно из одного файл (в ANSI кодировке файл) считать русский текст и записать в другой файл. Делаю так:

QFile * file_imit = new QFile(this);
    file_imit->setFileName("imitator.txt");
    if(!file_imit->open(QFile::ReadOnly))
    {
        qDebug() << "error" << file_imit->errorString();
    }
    QByteArray buffer2;
    buffer2 = file_imit->readLine();
    
    QTextCodec::ConverterState state;
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    
    QString text = codec->toUnicode(buffer2.constData(), buffer2.size(), &state);
    
    qDebug() << "text" << text << "state.invalidChars" << state.invalidChars;
    
    if (state.invalidChars > 0) //если не угадали
    {
        text = QString::fromLatin1(buffer2);
        qDebug() << "fromLatin1" << text;
    }
    
    qDebug() << "manufactureNumber" << text;
    QString manufacture = text; 
    
    //QString manufacture = "A0404           ";  //это работает
    
    
    QString buffer;
    
    buffer.append("Заводской №:" + manufacture + "\r\n");
    
    
    QFile file;
    file.setFileName("info.txt");
    if(file.open(QFile::WriteOnly))
    {      
        file.write(buffer.toStdString().c_str(), buffer.toStdString().size());
        file.close();
    }
    

Вывод:

text "?0404           " state.invalidChars 1 
fromLatin1 "A0404           " 
manufactureNumber "A0404           "
В файле info.txt
Заводской №:À0404 

По выводу все нормально считал «A0404» текст из файла, но криво пишет в другой файл. Подскажите где ошибка ?

 , , ,

user2132
()

Как в qt построчно отредактировать файл ?

Форум — Development

Есть текстовой файл, в который функция должна добавлять колонку данных, нужно считать строку и добавить к ней новые данные и переписать старую строку новой. Вот так пробую, но затирает следующую строку:

QFile file("123.txt");
    if (!file.open( QIODevice::Text | QIODevice::ReadWrite))
    {
        qDebug() << "error" << file.errorString();
        return;
    }
    QTextStream out(&file);

    while (!file.atEnd()) {
        QString line2 = file.readLine();
        qDebug() << "line2_" << line2;

        file.seek(file.pos() - line2.length() - 1); // ещё единичка для перевода строки
        line2 = line2.remove(line2.length()-1,1); //удаляю перевод каретки
        qDebug() << "line2_mod" << line2;

        QString newstr = line2 + "   <-- changed string\n";

        qDebug() << "newstr" << newstr;

        out << newstr;  //хочу записать измененную строку в то же место откуда взял
    }
    file.close();

Вообщем можно ли как-то через qfile или qtextstream указать ему позиции исходной строки, которую надо заменить новой более длинной.

 ,

user2132
()

Как нарисовать кликабельную гистограмму в qt ?

Форум — Development

Нужно нарисовать прямоугольники на форме с возможностью кликать по ним и получать какую-нибудь реакцию на это. Как бы сделать по простому, paintevent ручками рисовать если, то при растягивании формы вычислять их координаты для определения куда кликнули трудновато наверно. Можно ли это сделать проще ?

 ,

user2132
()

После QRegExp знаки вопроса вместо русских букв.

Форум — Development

Парсю из строки русские символы.

Qstring str = file.readline();

 rx.setPattern("(ИД-\\d+)");
 if (rx.indexIn(str) != -1) {
     QString name = rx.cap(1);

 }
Файлы сохранены были в разных текстовых редакторах. В одних файлах нормально, в других name после парсинга вместо ИД идут ?? знаки. Подскажите как пофиксить, думаю дело в кодировках.

 ,

user2132
()

Как в qt msvc при crash не дать упасть приложению ?

Форум — Development

Подскажите как можно в qt msvc проекте, когда случаются ошибки access violation, не дать проге упасть. То есть хочу словить это исключение и обработать, чтобы прога не рухнула из-за него. Можно ли это как-то сделать в qt msvc ловить исключения. Хочу их в лог записывать.

 , , ,

user2132
()

Как правильно сравнивать байты в QByteArray ?

Форум — Development

Почему вот этот вариант не работает.

QByteArray ans = QByteArray("\xA5\x12",2);

if(ans.at(0) == 0xA5)
{
   qDebug() << "ok"; //не попадает сюда
}

А этот вариант работает.

QByteArray ans = QByteArray("\xA5\x12",2);

if(ans.at(0) == '\xA5')
{
   qDebug() << "ok";
}

 ,

user2132
()

Как QSpinBox отредактировать после ввода ?

Форум — Development

Нужно после ввода данных в QSpinBox проверить их на кратность числу какому-то и поправить их, если не соответствуют условию. Подскажите на какое событие ловить после ввода в него данных.

 ,

user2132
()

Как удалить из файла последнюю строку в qt ?

Форум — Development

Хочу удалить из файла последнюю строку, используя qfile. Как это сделать по простому, не переписывая его.

 ,

user2132
()

Как найти зависший QMutex.

Форум — Development

Есть класс для работы с девайсом, который помещается в QThread, в конструкторе класса объявлен таймер так:

timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(sl_timer()));
timer->start(0); //для наиболее частого опроса девайса 0 стоит.

sl_timer - это метод этого же класса, в котором идет опрос девайса. Этот метод и другие методы, которые вызываются из sl_timer и работают с глобальным QList защищены QMutex так:

QLockerMutex lock(&mutex); 
В одном из 5-10 случаев происходят какие-то зависания внутри sl_timer, полагаю что мьютекс где-то зависает. Как бы найти в какой конкретно функции это происходит ? Правильно ли я понимаю, что sl_timer из-за start(0) сможет вызваться второй раз еще когда первый вызов не отработал. То есть могут ли sl_timer тут начать работать параллельно и из-за локов мьютексами друг друга зависать ?

 , , ,

user2132
()

Как реализовать в qt работу с QList нескольким потокам для записи и чтения ?

Форум — Development

Есть не сколько потоков в программе, один обновляет QList, может удалять в нем элементы и добавлять. Остальные только читают. QList объявлен глобально в классе, который занимается обновлением его. В другие потоки передавал по ссылке QList для чтения, сейчас сделал по значению передачу. Но прога иногда каким-то случайным образом падает. Во всех классах для чтения QList проверяется его размер и соответственно нету выхода за пределы массива вроде как.

Вот из-за чего падает каким-то случайным образом и как такой баг отловить ?

 , ,

user2132
()

как перехватывать post запросы из своего приложения ?

Форум — Development

Есть приложение, которое отправляет post запросы. Хочу отлаживать его без инета, то есть в другом приложении перехватить запрос и прислать ему ответ. Как можно подобное реализовать ?

 ,

user2132
()

qt msvc как собрать статически.

Форум — Development

Пробую собрать на qt5.2.0 версии. При выполнении jom выдает тут ошибку. Подскажите как поправить configure, чтобы без qtquick собирать, я так понимаю из-за него тут прерывается.

Скопировано файлов:         1.
        C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\bin\moc.exe -DUNICODE -DWIN32 -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_STATICPLUGIN -DQT_PLUGIN -DQT_QUICK_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -D_MSC_VER=1700 -D_WIN32 -I"..\..\..\include\QtQuick\5.2.0" -I"..\..\..\include\QtQuick\5.2.0\QtQuick" -I"..\..\..\include\QtQml\5.2.0" -I"..\..\..\include\QtQml\5.2.0\QtQml" -I"..\..\..\include" -I"..\..\..\include\QtQuick" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include\QtQuick" -I"..\..\..\include\QtQml" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include\QtQml" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include\QtNetwork" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include\QtGui" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include\QtCore" -I".moc\release" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\mkspecs\win32-msvc2012" -Muri=QtQuick.2 plugin.cpp -o .moc\release\plugin.moc
        cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_STATICPLUGIN -DQT_PLUGIN -DQT_QUICK_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -I"..\..\..\include\QtQuick\5.2.0" -I"..\..\..\include\QtQuick\5.2.0\QtQuick" -I"..\..\..\include\QtQml\5.2.0" -I"..\..\..\include\QtQml\5.2.0\QtQml" -I"..\..\..\include" -I"..\..\..\include\QtQuick" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include\QtQuick" -I"..\..\..\include\QtQml" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include\QtQml" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include\QtNetwork" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include\QtGui" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\include\QtCore" -I".moc\release" -I"C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\mkspecs\win32-msvc2012" -Fo.obj\release\ @C:\Users\PC\AppData\Local\Temp\plugin.obj.6284.1281.jom
plugin.cpp
        lib /NOLOGO  /OUT:C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\qml\QtQuick.2\qtquick2plugin.lib @C:\Users\PC\AppData\Local\Temp\qtquick2plugin.lib.6284.3078.jom
        lib /NOLOGO  /OUT:C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\qml\QtQuick.2\qtquick2plugind.lib @C:\Users\PC\AppData\Local\Temp\qtquick2plugind.lib.2660.5922.jom
        lib /NOLOGO  /OUT:C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\qml\QtQuick\Particles.2\particlesplugind.lib @C:\Users\PC\AppData\Local\Temp\particlesplugind.lib.8244.2422.jom
jom: C:\Qt\qt-everywhere-opensource-src-5.2.0\qtdeclarative\src\imports\particles\Makefile [release-all] Error 2
jom: C:\Qt\qt-everywhere-opensource-src-5.2.0\qtdeclarative\src\imports\Makefile [sub-particles-make_first] Error 2
        lib /NOLOGO  /OUT:C:\Qt\qt-everywhere-opensource-src-5.2.0\qtbase\qml\QtQuick\Window.2\windowplugind.lib @C:\Users\PC\AppData\Local\Temp\windowplugind.lib.5692.2093.jom
jom: C:\Qt\qt-everywhere-opensource-src-5.2.0\qtdeclarative\src\imports\window\Makefile [release-all] Error 2
jom: C:\Qt\qt-everywhere-opensource-src-5.2.0\qtdeclarative\src\imports\Makefile [sub-window-make_first] Error 2
jom: C:\Qt\qt-everywhere-opensource-src-5.2.0\qtdeclarative\src\Makefile [sub-imports-make_first-ordered] Error 2
jom: C:\Qt\qt-everywhere-opensource-src-5.2.0\qtdeclarative\Makefile [sub-src-make_first] Error 2
jom: C:\Qt\qt-everywhere-opensource-src-5.2.0\Makefile [module-qtdeclarative-make_first] Error 2

 , , ,

user2132
()

Как найти в qt проекте утечку памяти ?

Форум — Development

С помощью DebugDiag получаю крэшдамп со стек трейсом падения. По стеку определил, что падает из-за нарушения указателя переменной. В коде используется что-то типа

QList<MyClass *> * mylist
В какой-то момент по адресу переменной mylist вместо нормального адреса в дебагере qt вижу что-то типа 0xcdcdcdcd. И прога падает при первом обращении после повреждения указателя к этой переменной. Как найти где рушится этот указатель в коде, а также можно ли после этого штатно проверить, что он кривой и не дать ей упасть при обращении ? Проект довольно большой и достался от другого прогера, который уволился) Само повреждение указателя случается не регулярно, а к примеру может через 5 минут, может через пару часов упасть.

 , , , ,

user2132
()

Как отловить случайный баг в большом проекте qt ?

Форум — Development

Как выловить случайный баг, который происходит случайным образом. Прогу запускают для опроса оборудования на 5-8 часов и в процессе опроса вылетает иногда. Не получается отловить где падает. Как поймать, можно ли поймать момент падения и получить stack trace ? Интересует как на винде это сделать.

 , , ,

user2132
()

Как работать с QSerialPort в потоке ?

Форум — Development

Создал класс для работы с QSerialPort, отнаследовал от QObject. Помещаю класс в созданный QThread. Но при вызове метода этого класса для открытия порта кидает такую ошибку:

QObject: Cannot create children for a parent that is in a different thread. (Parent is QSerialPort(0x477618), parent's thread is QThread(0x46eaf0), current thread is QThread(0x3f9768)

Прога работает, но вываливается случайным образом после n успешных обращений к порту. Как это пофиксить правильно. И как в Qt определять на какой строчке кода вылетела, происходит ошибка, но отладчик ее не ловит нормально и просто закрывает прогу.

 , , ,

user2132
()

RSS подписка на новые темы