qt一些应用函数

前端之家收集整理的这篇文章主要介绍了qt一些应用函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转载自http://blog.csdn.net/binghehjbenben/article/details/7693714

sql语句中使用变量
通过使用变量绑定的方式解决。如下代码所示:
query.prepare("insert into stu(id,name) values(:id,:name)");
query.bindValue(":id",7,Qsql::In);
query.bindValue(":name",s2,Qsql::In);


在tableView中显示数据库中的数据

QsqlTableModel *model = new QsqlTableModel;
model->setTable("tablename");
model->select();

tableView->setModel(model);
如果不需要某些项目的话,使用model->removeColumn(需要删除的列的编号);(列的编号是以model->select()后出现的项目顺序进行排序,从0开始);

使用QButtonGroup

QButtonGroup *buGroup = new QButtonGroup(this);//按钮组
buGroup->addButton(ui->One_2,1);//添加按钮到QButtonGroup
buGroup->addButton(ui->Two_2,2);
buGroup->addButton(ui->Three_2,3);
Object::connect(buGroup,SIGNAL(buttonClicked(int)),this,SLOT(buttonNumslot(int)));
函数buttonNumslot(int num)的实现、:
ui->lineEdit->insert(QString::number(num));


unsigned char *转换为QString (灵活使用强制类型转换)
现将unsigned char *转换为char *,然后在强制转换为QString,参考代码如下:
unsigned char a[] = "123";
QString string((char *)a);

TableWidget显示的项目平均分配列所占用的长度
QTableWidget *table = new QTableWidget();
table->setColumnCount(3);
table->setRowCount(5);
table->horizontalHeader()->setStretchLastSection(true); //就是这个地方
table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
table->show();
此种方式只能平均分配当前table的大小,但是不能随着table中数据的大小而改变,如果需要的话,应该使用:
tableView->resizeColumnsToContents();//按照内容设置列的宽度

改变tableWidget中分页名称
使用tabWidget中的setTabText成员函数函数原型为:void QTabWidget::setTabText ( int index,const QString & label )
参考代码如下:tabWidget->setTabText(0,"button");

在Qt中使用全局变量,即在各个界面中都能使用
解决方式:使用extern变量类型修饰符
在一个.h的头文件中声明需要全局使用的变量,在变量前面要加上extern修饰符此谓之声明,然后在.cpp文件中给这些变量赋值。此谓之定义。在其他文件中只需要在所有函数外边使用:变量类型 变量名 ,然后就可使用,在第二次使用时要在前面加上extern。不然编译器会报错:重复定义某个变量
此问题主要是extern的使用方法:先在一个文件中声明(即extern 变量类型 变量名,但不分配内存),然后再定义方可使用(定义方式:变量类型 变量名)。
注:(1)、尽量不要去修改全局变量的值,只是去使用。即将全局变量当作只读变量。防止出现不必要的麻烦。
(2)、调用全局变量的源文件可以不用包含全局变量所在的头文件,但最好是加上,因为几个文件间的相互包含makefile都给解决了。
(3)、这种方法有弊端,主要是如果在系统库函数中有和定义的全局变量同名的变量,将会造成冲突。并且其结构不符合面向对象的思想,


取出tableView中特定行的值
首先创建槽关联信号clicked ( const QModelIndex & )的槽,在槽函数中使用如下代码
int row = index.row();(index是QModelIndex *index,在槽函数声明的时候中自动添加的)
qDebug() << QString::number(row,10); //测试选中第几行
QsqlRecord record = model->record(row); //声明一个QsqlRecord对象,存储查询结果
QString title = record.value("Data").toString(); //将选取的值存储在变量中
qDebug() << title;

关于事件重构
首先在头文件中重新定义需要重构的事件,但一定要定义为protect类型,(保持原有类型不变),如
protect :
void showEvent(QShowEvent *e);
bool event(Qevent *e);
然后在源文件中重新实现该事件即可。

QString类中的一些函数介绍,replace()、remove()
replace()函数的作用是使用一个字符串来代替另一个字符串中的某一部分。如:
QString str = "a cloudy day";
str.replace(2,6,"sunny"); //结果为a sunny day
重载的replace()函数让第二个参数代替所有出现第一个参数的地方。如:
str.replace("a","aaaaaaaa");//用“aaaaaaaa”替换所有出现“a”的地方。
remove()函数的作用是删除一个字符串中的某些部分。如:
QString str = "a cloudy day";
str.remove(2,6); //结果为a day
从const char *转换为QString的方式为:QString str += "(const char *)";或是使用加上QString的强制转换,或者调用fromAscii()或fromLatin1()。

数据库错误类型
数据库错误类型主要包含在QsqlError类。使用此类的各个模式中的lastError()成员函数就可以获得错误类型。常见的错误类型使用QsqlErrorErrorType枚举类型:
具体内容如下所示:

Constant Value Description
QsqlError::NoError 0 No error occurred.(正常,没有错误发生)
QsqlError::ConnectionError 1 Connection error.(连接错误
QsqlError::StatementError 2 sql statement Syntax error.(sql语句语法错误
QsqlError::TransactionError 3 Transaction Failed error.(转换错误
QsqlError::UnknownError 4 Unknown error.(未知错误

清空QTableView中的内容
重新定义一个model(TableModel、QsqlQueryModel等任何模型均可),然后使用TableView中的setModel成员函数重新加载即可

设置sqlite表中的某一个字段为自增字段 从 sqlite 的 2.3.4 版本开始,如果你将一个表中的一个字段声明为 INTEGER PRIMARY KEY, 那么无论你何时向该表的该字段插入一个 NULL 值,这个 NULL 值将自动被更换为比表中该字段所有行的最大值大 1 的整数;如果表为空,那么将被更换为 1。 注:在插入的时候不用插入该字段。

猜你在找的Sqlite相关文章