crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

История благодарностей участнику inviZ ::: Спасибо сказали: 4 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
4.7.2010, 13:05 Проверка существования БД
Цитата(bynet @ 3.7.2010, 4:49) *
Надо проверить в программе существует ли БД (использую QSQLITE), если она не существует то создать, а если существует прочитать её. Помогите с реализацией! Какие пути решения?

Все верно во втором посте. База сама создается, если ее нет.
Но скорее всего тебе еще придется проверить, существуют ли нужная тебе таблица/таблицы. Например, как-то так:

//check for table existence
QSqlQuery query("select name from sqlite_master where type='table' and name='table_name'", database);
if (!query.first())
{
    //table does not exist, create it
   ...      
}


Вместо table_name используешь название нужной таблицы, естественно.
bynet,
27.6.2010, 7:17 кроссплатформенный GUI
Цитата(Robin Bobin @ 27.6.2010, 11:50) *
например если сделать интерфейс под смартфон с графическими виджетами, а потом скомпилить под все ОС, то будет один и тот же интерфейс?

Ну собственно, зависит от того, какой стиль используется. Если явно не задавать стиль, то используется стиль данной ОС. Т.е. все контролы будут выглядеть так же, как и в родных приложениях для данной ОС. А если сделать, например, так:
QApplication::setStyle(new QWindowsStyle);
То даже на Symbian все контролы будут выглядеть, как в Windows. Кроме того, можно кастомизировать внешний вид виджетов с помощью таблиц стилей. В этом случае во всех ОС они также будут выглядеть одинаково.

Цитата(Robin Bobin @ 27.6.2010, 11:50) *
т.е. программирование с ними одинаковое?

Да. Встречаются, конечно, некоторые флаги и т.п., специфичные для конкретной платформы (например, Qt::MSWindowsFixedSizeDialogHint), но обычно их не приходится использовать.
Цитата(Robin Bobin @ 27.6.2010, 11:50) *
для XP и висты отдельно компилировать нужно?

нет
Robin Bobin,
17.6.2010, 19:13 Выборка из базы данных
bool rt = query.exec(select_query);
query.next();
QByteArray bytes = query.value(0).toByteArray();

QString str = "0x";
foreach(quint8 b, bytes)
{
    str.append(QString("%1").arg((uint)b, 2, 16, QChar('0')));
}


Пробуй.
AD,
7.6.2010, 16:59 Над каким виджетом отрабатывает QAction?
Цитата
Ее сендер мне поможет только для запоминания указателя на вызванное меню.

Это с чего вдруг? В слоте showContextMenu, который подсоединен к customContextMenuRequested, sender() вернет указатель на твой виджет, для которого вызвано контекстное меню. Ну и запоминаешь его где-нибудь... Например, так:
act->setData(qVariantFromValue(sender()));
Litkevich Yuriy,

RSS Текстовая версия Сейчас: 22.1.2021, 4:00