Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
31.5.2012, 4:09 | Одновременное нажатие кнопок. Не modifiers | Всем доброго времени суток! Как отловить нажатие нескольких кнопок, не комбинации с шифтом/контролом и т.д., а, например, нажатие стрелок вверх и влево. Заранее благодарю! Вариант с переопределением keyPressEvent и keyReleaseEvent и записью состояний нужных клавиш не подходит? |
vankleef, | ||
12.3.2012, 23:31 | Подключение к базе данных на виртуальной машине (QODBC) | Всем доброго времени суток! Пытаюсь подключиться к базе данных на виртуальной машине таким образом #include "mainwindow.h" #include "ui_mainwindow.h" #include <C:\QtSDK\Desktop\Qt\4.8.0\mingw\include\QtSql\qsqldatabase.h> #include "QSqlError" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked(){ db=QSqlDatabase::addDatabase("QODBC"); db.setHostName(ui->lineEdit->text()); db.setDatabaseName(ui->lineEdit_2->text()); db.setUserName(ui->lineEdit_3->text()); db.setPassword(ui->lineEdit_4->text()); db.setPort(1433); db.setConnectOptions("SQL_ATTR_ACCESS_MODE=SQL_MODE_READ_ONLY;SQL_ATTR_TRACE=SQL_OPT_TRACE_ON"); if(!db.open()){ qDebug() << "Can't open DB: " << db.lastError().text(); } else { ui->lineEdit_5->setText("Good"); } db.close(); } Выдается ошибка: Can't open DB: "[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию QODBC3: Unable to connect" Что я делаю не так? Ну то что с ходу бросилось в глаза это то что для ODBC не указан драйвер коннектора. Я тоже бился головой о проблему невозможности подключиться просто по DNS имени источника данных. Приходилось все-же указывать имя коннектора. Вот можно почитать про синтаксис строки настроек ODBC http://msdn.microsoft.com/ru-ru/library/sy...tionstring.aspx http://www.connectionstrings.com/mysql Хотя вот мне коллеги еще посоветовали посмотреть на такое http://www.easysoft.com/developer/libraries/qt/example.cpp |
Turbo, | ||
22.1.2012, 13:55 | QT&ZigBee | Stoptyssin, а примеры... Может поможет. Кусок из моего давнего проекта. У нас было самопальное устройство, у которого сообщения с устройства были просты как валенки Цитата <CommandValue> Где Command и Value были целыми числами. Данные капали где-то 5 раз в секунду и лень было заморачиваться с оптимизацией, поэтому сделал так. (писал с использованием QextSerialPort но разницы никакой). Унаследовался от QextSerialPort , завел слот, который связал с сигналом readyRead() (то есть в этом слоте читал данные, которые пришли с порта). В нем все что приходило забивал в свойство этого класса типа QByteArray (то есть создавал буфер на случай если у меня не вся команда придет сразу) и затем в этом буфере искал целую команду. Когда находил команду, высылал сигнал, который сообщал что за команда пришла и ее параметр
Затем создал обычный класс, унаследованный от QObject, к котором принимал этот сигнал и просто забивал очередь QQueue. В этом-же классе переопределил свойство void timerEvent(QTimerEvent *); и в нем смотрел, если очередь не пустая, то писал в базу одно первое сообщение очереди и успокаивался. Пришлось извратиться с таймером так, потому что в качестве базы выступала xml таблица на удаленной машине, подключенная через ODBC |
Stoptyssin, | ||
21.1.2012, 17:29 | QT&ZigBee | Чем аргументируешь? Чем оно лучше? Все равно все от него пляшут данные полученные с устройства должны сохранятся в архиве, а БД уже обработанные. А можно сразу нескромный вопрос - "А чем БД плоха в качестве архива?" Вы же, если я не ошибаюсь, MySQL использовать собрались, а там есть такой замечательный тип как Archive. И вообще часть обработки (если не всю) можно положить непосредственно на базу данных. Почитайте про триггеры При этом всем может одновременно идти инфармация от нескольких устройств Вы что-то там упоминали про ZigBee коллектор, что-то не могу понять как он работает. Он принимает данные с устройств и какает в порт сообщениями типа "Такой-то девайс послал то-то" ? Или он на одно устройство рассчитан? |
Stoptyssin, | ||
28.12.2011, 1:13 | QString вынуть int | А можно регулярным выражением пройтись. Лично я, если это не критичный кусок кода или чтобы не заморачиваться с позициями, предпочитаю такой вариант. crazymonkey, если у вас еще и длины чисел гуляют, я бы все-таки посмотрел в сторону регулярных выражений. Я не знаю точных подробностей как там у Вас строка может выглядеть, поэтому навскидку накидал пример
Удобство в том что при правильно составленном шаблоне сразу и валидацию строки можно произвести быстро |
crazymonkey, | ||
Текстовая версия | Сейчас: 27.11.2024, 6:21 |