Qt实践录:常见控件操作示例2

继前篇,本文继续记录QT常见控件的操作示例。包括:QProgressBar 等。

QProgressBar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
设置范围及初始值
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

相关头文件(实际上,其它的列表也需要使用):

1
2
3
#include <QStringListModel>
#include <QStandardItemModel>
#include <QModelIndex>

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

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

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);