можете рассказать по шагам как это сделать, начиная с компиляции qt?
Про компиляцию Qt лучше спросите у Гугла.
Ref про использование библиотек mysql
http://linuxshare.ru/docs/software/SQL/mysql/manual/mysql_connect.htmlПодключите header mysql в проект.
Введите приватные переменные, касающиеся DB (так удобнее).
Напишите приватные функции подключения,отключения к/от БД.
Напишите вызываемые функции добывания данных из БД.
И используйте их.
Для примера.
Хидер и Подключение/отключение к/от БД.
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
// функции, вызываемые из QML (callback function)
Q_INVOKABLE QString F1(QString);
Q_INVOKABLE QString F2(QString);
Q_INVOKABLE QString F3(QString);
// чтение таблицы стилей
Q_INVOKABLE QString readStyleSheet(QString fileName);
Q_INVOKABLE void setNewIP(QString IP);
Q_INVOKABLE QString testConnection(void);
Q_INVOKABLE QString loadOneTag(QString id);
...
private:
....
// параметры и функции работы с DB
QString hostName;
//QString dbName;
//QString userName;
//QString readDbPassword;
//QString writerName;
//QString writeDbPassword;
MYSQL *db;
void conRdDb();
void conWrDb();
void closeDb();
};
void MainWindow::conRdDb()
{
db = mysql_init(NULL);
if(db==NULL)
{
qDebug() << "Ошибка создания MYSQL дескриптора. Полный пипец";
}
else
{
if (!mysql_real_connect(db, hostName.toAscii().data(), "user", "userPas", "nameDB", 0,NULL,0))
{
qDebug() << "Ошибка подключения к Db - выход";
mysql_error(db);
}
else
{
qDebug() << "Подключились читать";
mysql_query(db, "SET CHARACTER SET 'utf8'");
mysql_query(db, "SET NAMES 'utf8");
}
}
}
void MainWindow::closeDb()
{
// Закрываем соединение с сервером базы данных
mysql_close(db);
qDebug() << "Отключились";
}
Пример чтения
QString MainWindow::loadOneTag(QString id)
{
QString s = "";
QString q = "SELECT value FROM readdata WHERE tag_id="+id;
qDebug() << "id="<<id;
conRdDb();
if (mysql_query(db,q.toAscii().constData()))
{
qDebug() << "Ошибка запроса";
}
else // запрос выполнен, обработка возвращенных им данных
{
MYSQL_RES *result;
result = mysql_store_result(db);
if (result){
MYSQL_ROW row;
if(row= mysql_fetch_row(result)) {
s = QString(row[0]);
qDebug() << "Чтение результата";
}
mysql_free_result(result);
}
else
{
qDebug() << "Запрос не вернул ничего";
}
}
closeDb();
return s;
}
Пример вызова из QML формы (таймер стучит каждую секунду и собирает теги из БД, для визуализации мнемосхемы)
...
property bool tag1: false;
property bool tag2: false ;
property bool tag3: false;
...
property bool tag156: false;
...
Timer {
interval: 1000; running: true; repeat: true
onTriggered: loadTags()
function loadTags()
{
tag1 = Number(window.loadOneTag("82"));
tag2 = Number(window.loadOneTag("83"));
tag3 = Number(window.loadOneTag("84"));
...
tag156 = Number(window.loadOneTag("397"));
}
}
...
Как видите все тривиально.