crossplatform.ru

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

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> Кодировки в QT, Не работает отображение русских букв
Alex69z
  опции профиля:
сообщение 7.1.2009, 22:26
Сообщение #11


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 7.1.2009
Пользователь №: 480

Спасибо сказали: 0 раз(а)




Репутация:   0  


#include "ui_Form.h"
#include <mysql.h>
#include <QTextCodec>

class MyWidget : public QWidget {
private:
    MYSQL * Db;
    MYSQL_RES * Result;
public:
    MyWidget(QWidget * parent = 0);
    ~MyWidget();
};

int main(int argc, char * argv[], char * env[]){
QApplication app(argc,argv,env);
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
MyWidget * widget = new MyWidget;
widget->show();
return app.exec();
}

MyWidget::MyWidget(QWidget * parent):QWidget(parent) {
    MYSQL_ROW Row;
    unsigned int i,j = 0;
    Ui::Form * form = new Ui::Form;
    form->setupUi(this);
    
    Db = mysql_init(NULL);
    mysql_options(Db,MYSQL_SET_CHARSET_NAME,"utf8");
    mysql_real_connect(Db,"127.0.0.1","User","Password","Database",0,NULL,0);
    mysql_query(Db,"select * from table_1");
    Result = mysql_store_result(Db);
    form->tableWidget->setColumnCount(Result->field_count);
    form->tableWidget->setRowCount(Result->row_count);
    while((Row = mysql_fetch_row(Result))){
        for(i = 0; i < Result->field_count; i++){
            QTableWidgetItem * newItem = new QTableWidgetItem(Row[i]);
            form->tableWidget->setItem(j, i, newItem);
        }
        j++;
    }
}

MyWidget::~MyWidget(){
    if(Db) mysql_close(Db);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.1.2009, 22:51
Сообщение #12


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Alex69z, что это за каша?

Alex69z, опиши к чему это сообщение, это у тебя так main.cpp выглядит?


П.С. В Qt так с БД не работают, есть более удобные средства.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 7.1.2009, 22:56
Сообщение #13


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Лучше разносить описание класса, и его реализацию по разным файлам.

Замечание: используй тег code=cpp.

Цитата
Db = mysql_init(NULL);
mysql_options(Db,MYSQL_SET_CHARSET_NAME,"utf8");
mysql_real_connect(Db,"127.0.0.1","User","Password","Database",0,NULL,0);
mysql_query(Db,"select * from table_1");
Result = mysql_store_result(Db);


а это что? На мой взгляд тут уместнее использовать модуль QtSql почитать про него можно тут http://www.doc.crossplatform.ru/qt/4.4.3/qtsql.html

Подключаться к базе так

QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");
database.setDatabaseName(Database);
database.setUserName("User");
database.setPassword("Password");
database.setPort("Port")
database.open();


Сообщение отредактировал molchanoviv - 7.1.2009, 22:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Alex69z
  опции профиля:
сообщение 7.1.2009, 23:02
Сообщение #14


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 7.1.2009
Пользователь №: 480

Спасибо сказали: 0 раз(а)




Репутация:   0  


Для умных людей это может выглядеть как "каша" (не сказать еще хужей...), однако это каша МОЯ и я на ней учусь. Не думаю, что Ваше первое Qt-творение выглядело многим лучше. Однако за отзывы премного благодарен.
Насчет "удобных" и "умных" средств для работы с MySQL - это дело вкуса и уровня мастерства. Дорасту и до этого. А пока вот так - напрямую через MySQL API.

Описание класса и его реализацию конечно же следует разносить в разные файлы. Так и сделаю, только не для пробной программки в 3 десятка строк. Мне хотя бы самые простые вещи понять и обкатать. Глянец наводить будем при содании приложения in lege artis.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 7.1.2009, 23:05
Сообщение #15


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Выложи ui-шку я тебе свояю небольшой код. Сравнишь его со своим. Увидишь что через QtSql работать гораздо удобнее.

По теме: Таки кодировка исходников какая?

Сообщение отредактировал molchanoviv - 7.1.2009, 23:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Alex69z
  опции профиля:
сообщение 7.1.2009, 23:08
Сообщение #16


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 7.1.2009
Пользователь №: 480

Спасибо сказали: 0 раз(а)




Репутация:   0  


<ui version="4.0" >
<class>Form</class>
<widget class="QWidget" name="Form" >
  <property name="geometry" >
   <rect>
    <x>0</x>
    <y>0</y>
    <width>292</width>
    <height>394</height>
   </rect>
  </property>
  <property name="windowTitle" >
   <string/>
  </property>
  <widget class="QWidget" name="gridLayoutWidget" >
   <property name="geometry" >
    <rect>
     <x>0</x>
     <y>10</y>
     <width>291</width>
     <height>381</height>
    </rect>
   </property>
   <layout class="QGridLayout" name="gridLayout" >
    <item row="1" column="0" >
     <widget class="QLineEdit" name="lineEdit" />
    </item>
    <item row="1" column="1" >
     <widget class="QPushButton" name="pushButton" >
      <property name="text" >
       <string>OK</string>
      </property>
     </widget>
    </item>
    <item row="0" column="0" colspan="2" >
     <widget class="QTableWidget" name="tableWidget" />
    </item>
   </layout>
  </widget>
</widget>
<resources/>
<connections/>
</ui>
Причина редактирования: обрамляем не-текст в тэг code
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.1.2009, 23:08
Сообщение #17


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Alex69z @ 8.1.2009, 2:02) *
однако это каша МОЯ и я на ней учусь. Не думаю, что Ваше первое Qt-творение выглядело многим лучше. Однако за отзывы премного благодарен.
каша с самим сообщением.
1)
Цитата(molchanoviv @ 8.1.2009, 1:56) *
Замечание: используй тег code=cpp.

2) Есть негласное правило писать функцию main в конце файла main.cpp, там ее ожидает увидеть читатель кода.
3) Пиши сообщение, а не только вставляй код, т.к. к моменту появления твоего сообщения другие пользователи могут ответить в тему и твое сообщение окажется несвязным.
4)
Цитата(Alex69z @ 8.1.2009, 2:02) *
Описание класса и его реализацию конечно же следует разносить в разные файлы
Это правилов Qt! стоит тебе применить макрос Q_OBJECT при написании объявления класса и его раелизации в одном файле, тем более main.cpp, как с компиляцией возникнут проблемы!

Мой пример прочитай и используй. Жду результатов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Alex69z
  опции профиля:
сообщение 7.1.2009, 23:10
Сообщение #18


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 7.1.2009
Пользователь №: 480

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(molchanoviv @ 7.1.2009, 23:05) *
Выложи ui-шку я тебе свояю небольшой код. Сравнишь его со своим. Увидишь что через QtSql работать гораздо удобнее.

По теме: Таки кодировка исходников какая?


.ui файл выложил. А вот где добыть кодировку исходников - пока не нашел. Пойду src смотреть...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.1.2009, 23:12
Сообщение #19


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Alex69z @ 8.1.2009, 2:10) *
А вот где добыть кодировку исходников - пока не нашел
в текстовом редакторе в котором ты пишешь код
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Alex69z
  опции профиля:
сообщение 7.1.2009, 23:16
Сообщение #20


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 7.1.2009
Пользователь №: 480

Спасибо сказали: 0 раз(а)




Репутация:   0  


С Q_OBJECT уже попробовал - получил пару шишек. Советы Ваши очень ценю и благодарен Вам за участие. Ваш пример пробовал собрать, однако возникли проблемы:
1. app.load(QString("qt_") + locale); // загрузка файла qt_*.qm - метода load() не нашлось ни для QApplication, ни для QCoreApplication...
2. #include "mainwindow.h" - его еще создать надо (в designer'е насколько я понял).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


9 чел. читают эту тему (гостей: 9, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 2:50