继前篇,本文继续记录QT常见控件的操作示例。包括:QProgressBar 等。
QProgressBar
设置范围及初始值
ui->progressBar->setRange(0, 100);
ui->progressBar->setValue(0);
使用示例:
for (int i = 0; i < 100; i++)
{
ui->progressBar->setValue(i+1);
// 业务操作,如读取文件,发送数据等
// 延时示例
for (int j = 0; j < 100000; j++)
for (int k = 0; k < 100; k++);
}
列表QListView
相关头文件(实际上,其它的列表也需要使用):
#include <QStringListModel>
#include <QStandardItemModel>
#include <QModelIndex>
使用示例:
QStringListModel *Model = NULL;
QStandardItemModel *ItemModel = NULL;
ItemModel = new QStandardItemModel(this);
QStringList lst;
lst << "foo" << "bar" << "123" << "hello world";
QList<QStandardItem *> items;
foreach (QString itm, lst)
{
QStandardItem *item = new QStandardItem(itm);
items.push_back(item);
//ItemModel->appendRow(item);
//ItemModel->appendColumn(item);
}
ItemModel->appendColumn(items);
ui->listView->setModel(ItemModel);
// 复杂的应用待议
表格列表QTableView
使用示例:
QStandardItemModel* model = new QStandardItemModel(5, 3, this);
ui->tableView->setModel(model);
// 头部
QStringList headList;
headList << "序号" << "姓名" << "年龄";
for (int i = 0; i < headList.size(); i++)
{
model->setHeaderData(i, Qt::Horizontal, headList.at(i));
ui->tableView->setColumnWidth(i, 40); // 宽度
}
// 序号
for (int i = 0; i < 5; i++)
{
QStandardItem *item = new QStandardItem(QString::number(i+1));
model->setItem(i, 0, item);
model->item(i, 0)->setForeground(QBrush(QColor(255, 0, 0)));
}
// 数据
model->setItem(0, 1, new QStandardItem("Jim"));
model->setItem(0, 2, new QStandardItem("35"));
model->setItem(1, 1, new QStandardItem("Tom"));
model->setItem(1, 2, new QStandardItem("32"));
// 隔一行变色,用以区分
ui->tableView->setAlternatingRowColors(true);
树形列表QTreeView
使用示例:
QStandardItemModel* model = new QStandardItemModel(ui->treeView);
ui->treeView->setModel(model);
// 头部
QStringList headList;
headList << "树形列表";
model->setHorizontalHeaderLabels(headList);
QStandardItem* itemProject = new QStandardItem("项目");
model->appendRow(itemProject);
QStandardItem* itemChild = new QStandardItem("子项");
itemProject->appendRow(itemChild);
QStandardItem* itemChild11 = new QStandardItem("子子项");
itemChild->appendRow(itemChild11);
QStandardItem* itemChild2 = new QStandardItem("子项2");
itemProject->appendRow(itemChild2);