Просмотр сообщений
|
Страниц: 1 ... 3 4 [5] 6 7 ... 38
|
61
|
Qt / Пользовательский интерфейс (GUI) / Re: Qt Virtual Keyboard
|
: Октября 22, 2021, 07:04
|
как изменить ее размер или позиционировать в другое место? так же, как и любой Item, с помощью параметров x,y, width, height import QtQuick 2.15 import QtQuick.Controls 2.3 import QtQuick.Window 2.15
import QtQuick.VirtualKeyboard 2.1 import QtQuick.VirtualKeyboard.Settings 2.1
Window { width: 640 height: 480 visible: true title: qsTr("Hello World")
InputPanel { id: inputPanel y: 100 x: 50 width: parent.width*0.8 //x: 0 //width: parent.width }
TextField { width: parent.width placeholderText: "One line field" onAccepted: passwordField.focus = true anchors.bottom: parent }
}
|
|
|
62
|
Qt / Qt-инструментарий / QtCreator qml
|
: Сентября 21, 2021, 17:32
|
win7
что-то длелал, ставил, собирал.... format c: скачал инсталятор qt-unified-windows-x86-4.1.1-online.exe при установке отметил почти всё (см скрин)
делаю new project->пустой qt quick (или открываю из встроенных примеров) получаю рабочий хеловорд qml-проект. Но qml без подсветки и без автодополнения. Почему? вообще... смотрю мануалы, там QtC по другому выглядит.
|
|
|
64
|
Qt / Model-View (MV) / QAbstractItemModel
|
: Августа 27, 2021, 15:47
|
Не работает QAbstractItemModel. заголовок #ifndef TESTMODEL_H #define TESTMODEL_H
#include <QAbstractItemModel>
class TestModel : public QAbstractItemModel { Q_OBJECT public: TestModel(QObject *parent = 0);
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &index) const; };
#endif // TESTMODEL_H Реализация #include "testmodel.h"
TestModel::TestModel(QObject *parent) :QAbstractItemModel(parent) { }
int TestModel::columnCount(const QModelIndex &parent) const { return 2; }
QVariant TestModel::data(const QModelIndex &index, int role) const { int row = index.row(); int column = index.column(); if (!index.isValid() || row >= rowCount() || column >= columnCount()) return QVariant(); return "Hello word"; }
QModelIndex TestModel::index(int row, int column, const QModelIndex &parent) const { return createIndex(row, column, (void*)0); }
QModelIndex TestModel::parent(const QModelIndex &index) const { return QModelIndex(); }
int TestModel::rowCount(const QModelIndex &parent) const { return 2; }
rowCount() и columnCount() возращают размер модели 2х2. Ожидаю увидеть в QTreeView таблицу 2х2, в каждой клетке должно быть "Hello word". Но клеток нет. только горизонтальный заголовок с двумя колонками. Примеров построения холовордной модели QAbstractItemModel не нашел. Подскажите, чего не хватает, чтобы отобразить таблицу 2х2?
|
|
|
65
|
Qt / Общие вопросы / Re: Проблемы с VCP в Windows
|
: Августа 06, 2021, 11:27
|
JSerialPort тоже залип. Сейчас наблюдаю и QSerialPort и WinAPI одинаковое поведение. Нашел алгоритм 100% залипания компорта
1) вткаем железку в ПК 2) открываем компорт 3) выдергиваем усб, тут теряется связь 4) втыкаем усб, порт продолжает быть открытым, связь естественно не востанавливается 5) закрываем компорт 6) открываем компорт - ВСЁ!!! Порт залип. Занят др. приложением. Можно задергать шнурок - порт не освободиться.
Вычислил танец с бубном, который 100% отлипает компорт 7)выдергиваем усб 8 ) открываем компорт на выдернутом усб. получаем ошибку, такого порта нет. после этого действия порт "освобождается" 9) втыкаем усб 10) открываем порт, работаем.
Т.е. порт залипает если, грубо говоря, вызвать close() на дескриптор порта, который отваливался и сейчас опять есть.
|
|
|
66
|
Qt / Общие вопросы / Re: Проблемы с VCP в Windows
|
: Августа 05, 2021, 08:37
|
и как-то её решил?
Вобщем сделал свой QSerialPort с блэкджетом и *юхами обернул WinAPI в QObject-класс. Переопределил только те функции, которые используются в проекте. Кому интересно - пользуйтесь (нехватающие методы можно доопределить). Несколько часов работы - полёт нормальный. Задергал USB шнурок... - ни разу ком порт "незалип".
|
|
|
67
|
Qt / Общие вопросы / Re: Проблемы с VCP в Windows
|
: Августа 05, 2021, 06:03
|
ЗЫ: Я больше не занимаюсь сериал портом, не сопровождаю его. Так что спрашивай у кутешников теперь к ним все претензии
Я знаю, что ты съехал с сериалПорт-а, это притензия не к тебе, да и вообще это не притензия, это проблема, и может кто уже с такой проблемой сталкивался и как-то её решил?
|
|
|
68
|
Qt / Общие вопросы / Re: Проблемы с VCP в Windows
|
: Августа 04, 2021, 13:51
|
через WinAPI функции
Точно! WinAPI!!! Запустил свою старую утилиту, там компорт поднят на WinAPI. кагбэ в 3-х строчках код такой if(openPort(cbSerialPorts->currentText()) { do { ReadFile(port, buffer, 1, &BytesCnt, NULL);//читаем из порта 1 байт if(BytesCnt == 1) good(); }while(timeOut); closePort();//закрыть порт } timeOut заряжен на 10...100 секунд. компорт в WinAPI заряжен на 1...10 сек COMMTIMEOUTS ct; ct.ReadTotalTimeoutConstant=1000;//10000 Если дернуть усб во время ReadFile, то через ReadTotalTimeoutConstant миллисекунд ReadFile() вернёт 0 в BytesCnt. потом, по do повторный вызов ReadFile().... через ReadTotalTimeoutConstant мс ReadFile() возвращяет 0 в BytesCnt.... и так по кругу, пока через timeOut не выйдем из do-while. После этого порт закрывается closePort(). Если воткнуть железку обратно и опять запустить прогу (хоть на WinAPI, хоть на QSerialPort), то компорт ни кем не занят, открывается и работает. Т.е. при использовании WinAPI таких траблов в маздае нет, а с QSerialPort есть. (((
|
|
|
69
|
Qt / Общие вопросы / Re: Проблемы с VCP в Windows
|
: Августа 04, 2021, 08:47
|
ну да ладно.... не хочешь работать по СОМ30, переименовать в СОМ31 и открыть СОМ31.... такое чувство, что после закрытия QSerialPort и самой программы компорт продолжает оставаться открытым
|
|
|
70
|
Qt / Общие вопросы / Проблемы с VCP в Windows
|
: Августа 04, 2021, 08:39
|
Программа через USB-VCP общается с железкой. Для СОМ порт используется QSerialPort. Подключил железку по USB, в винде появился COM порт, запустил программу, открыл порт - работаешь. Закрыл порт, закрыл программу.... Всё прекрасно... до тех пор, пока не дёрниш USB при открытом порте в программе. Естественно в программе прекращается обмен данными. А вот дальше проблема: закрыл компорт в программе (остановил обмен), подключил USB обратно, снова появился VCP, в программе пытаюсь открыть СОМ порт - получаю ошибку открытия порта. Запускаю другую программу, пытаюсь открыть порт - ошибка открытия порта. В общем в системе (в диспетчере устройств) СОМ порт есть, но ни одна программа его открыть не может.
1) Как это лечится? 2) Можно как-то автоматически определить в программе (в QSerialDevice) что открыты СОМ порт более в системе не существует и сделать принудительное закрытие порта?
ps Windows 7 64
|
|
|
71
|
Qt / Общие вопросы / Вопрос юзеру из не gui потока
|
: Мая 13, 2021, 14:55
|
в не gui потоке идет обработка данных. При встрече определенных данных, нужно приостановить обработку, спросить пользователя "Быть?" или "Не быть?" и по результату ответа ветвиться в обработке дальше.
В голове куча "велосипедов".... Как это правильно и легко сделать? Есть пример/ссылка?
|
|
|
72
|
Qt / Вопросы новичков / Re: Получить указатель на главное окно
|
: Апреля 28, 2021, 12:47
|
Затем, что ...
Не горячитесь  Не надо бросаться доказывать что Вы (и только Вы) правы. Вы и так это знаете, Ваша правота от Вас никуда не убежит. Гораздо полезнее посмотреть какие еще есть решения. я ваш вариант не отбрасываю, это вы мой баните и пытаетесь мне доказать, что мой путь плох. ))... Я вам про ваш код ни слова не сказал. Вариантов много... какой лучше - и всё зависит от реализации app. По мне, так вообще, если маинВиндоу сделал дочку, то ни какие поиски, дополнительные члены дочке или QApplication::topLevelWidgets() не нужны. Есть QWidget::parentWidget() - необходимо и достаточно. Но если есть дочки/внучки... если создатель не маинвиндоу... то тогда озвучено несколько вариантов.
|
|
|
73
|
Qt / Вопросы новичков / Re: Получить указатель на главное окно
|
: Апреля 28, 2021, 11:38
|
Зачем дочке еще член если он и так есть (парент)? И если это не дочка а внучка?  Вы сами ответили на свой вопрос. Затем, что парентом может быть далеко не главное окно. Хоть внучка, хоть правнучка.... до 100 степени родства поколения - передать ссылку на Адама на главное окно, потом всегда можно напрямую обратиться к Путину, минуя министров к главному окну минуя парентов, без лишних розысков и проверок. ))
|
|
|
74
|
Qt / Вопросы новичков / Re: Получить указатель на главное окно
|
: Апреля 28, 2021, 11:12
|
Если же все-таки "ну вот надо", то можно напр так
при рождении дочери создании дочернего окна сообщить мать её передать указатель/ссылку на главное окно (или сообщить потом сеттером) и дочке запомнить указатель/ссылку в своих приватах.
|
|
|
75
|
Qt / Вопросы новичков / Re: Получить указатель на главное окно
|
: Апреля 28, 2021, 10:39
|
Как обращаться к функциям главного окна из дочерних окон? Ни как. ИМХО. Нефиг детям соваться в родительскую спальню. Запускайте из дочерних окон сигнал, в родительских обрабатывайте слотами.
|
|
|
|
|