QT中控件的简单使用

QT中控件的简单使用

    最近在使用QT开发一个软件,之前已看过QT方面的书籍,但由于是第一次使用QT开发项目,在使用控件上还是不够熟练。特在此记录下QT中控件的一些简单实用的操作,以备不时之需。不定时更新:

1、按钮控件:QPushButton

1)新建:

QPushButton *btn = new QPushButton("这是按钮"); //也可指定父窗口,一般默认为本窗口

2)设置固定大小:即即使窗口的大小发生变化,按钮控件的大小始终保持在固定大小,

btn->setFixedSize(100,200); //设置按钮的大小为100 x 200

3)设置背景图片:a) 首先需要添加图片:右键点击工程,选择“添加新文件”->“Qt Resource File”,点击“choose”,会出现如下图所示界面:


    在该界面中,点击“添加”->“添加前缀”,然后再点击“添加”->“添加文件”,选择要添加的图片即可(.png)格式,如下图所示:


    当添加完图片之后,就可以通过StyleSheet来设置背景图片了:

btn->setStyleSheet("background-image:url(:/new/icon/res/SimStart.png)"); //其中,url即为在资源文件中所在的位置

4)设置提示文字:当鼠标停在控件上时,会弹出提示文字:

btn->setToolTip("这是一个按钮");

2、文本框控件:QTextEdit

1)新建:

QTextEdit *textEdit = new QTextEdit();

2)显示多行数据:

textEdit->insertPlainText("显示信息"+"\n");  //当显示完信息之后,会换行

3、时间控件:QDateTime

1)获取时间:

QDateTime *currentTime = new QDateTime(QDateTime::currentDateTime());

2)显示时间:

QString currentTimeStr = currentTime->time().toString();

4、表格控件:QTableWidget

1)新建:

QTableWidget *table = new QTableWidget(20,3);    //建立了一个20*3的表格

2)设置表头:

QStringList tableHeader;
tableHeader << "列1" << "列2" << "列3";
table->setHorizontalHeaderLabels(tableHeader);

3)去掉自带的行号:

QHeaderView *headerViewRow = table->verticalHeader();
headerViewRow->setHidden(true);

4)使表格的宽度自适应表格控件的宽度:

table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

5)使表格中列的宽度自适应表格中的内容:

table->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
//其中函数中的第一个参数是用于指定某一列的宽度保持不变,一般默认设为0

5、树控件:QTreeWidget

1)新建:

QTreeWidget *tree = new QTreeWidget(*parent);    //可以指定父控件,
tree->clear();    //初始化树

2)设置树的标题:

tree->setHeaderLabel("这是树");    //当然也可以隐藏树的标题

3)建立树的节点:

QTreeWidgetItem *rootItem = new QTreeWidgetItem(tree);    //添加节点,其中参数表示该节点的父节点
rootItem ->setText(0, fedFileNameStr);    //设置该节点的名称
rootItem ->setWhatsThis(0, IS_ROOT);    //设置该节点的识别码,即What This Is? 可以通过该识别码判断节点是哪一类型的
rootItem ->setExpanded(true);                //设置自动展开

4)添加右键点击事件:

tree->setContextMenuPolicy(Qt::CustomContextMenu);  //必须要加,否则右键点击弹出菜单无反应
connect(tree,SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(SlotToClickRightItem(QPoint)));

//其中,SlotToClickRightItem(QPoint)为右键点击响应函数
currentTreeItem = tree->itemAt(clickPos);    //通过点击的位置判断点击的是树的哪一个节点,如果currentTreeItem 为空,则表示点击在空白处

//点击空白处,弹出右键菜单
QMenu *menuNewFed = new QMenu(this);    //创建菜单
menuNewFed->addAction(actNewFed);    //添加菜单项
menuNewFed->exec(QCursor::pos());    //将弹出菜单显示在鼠标点击处

5)添加左键点击事件:

connect(tree,SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(SlotToClickTreeItem(QTreeWidgetItem*,int)));

//其中SlotToClickTreeItem(QTreeWidgetItem*,int))为左键点击响应函数,其中QTreeWidgetItem*参数表示的是点击的树的节点元素,
//int型参数表示树节点元素的列数,通过获取节点元素的whatThis(colum)来判断点击的是哪一种节点元素

6、LED控件控件:QLCDNumber

1)新建:

QLCDNumber *lcd = new QLCDNumber();

2)设置属性:

lcd ->setFixedHeight(23);                 //设置控件 lcd 的宽度为23(固定宽度)
lcd ->setSegmentStyle(QLCDNumber::Flat);  //只有当设置为 flat 风格时,设置颜色才会生效
lcd ->setStyleSheet("color:yellow; background:black;");

3)显示数字:

lcd->display("display");    //需是数字类型的字符串

7、分割窗口:QSplitter

1)建立分割窗口:

//参数中,第一个参数表示分割窗口的方式,是水平分割还是垂直分割?第二个参数表示的是要被分割的窗口。

QSplitter *splitterMain = new QSplitter(Qt::Vertical, this);
splitterMain->addWidget(QWidget* widget);        //将控件 widget 添加到 splitterMain 分割窗口中//左中部分隔窗口
QSplitter *splitterLeftCenter = new QSplitter(Qt::Horizontal, splitterMain);
splitterLeftCenter->addWidget(QWidget* widget); //将控件 widget 添加到 splitterLeftCenter分割窗口中

//右中部分隔窗口
QSplitter *splitterRightCenter = new QSplitter(Qt::Vertical, splitterLeftCenter);
splitterRightCenter->addWidget(QWidget* widget); //将控件 widget 添加到 splitterRightCenter 分割窗口中

 //下部分隔窗口
QSplitter *splitterLeftDown = new QSplitter(Qt::Horizontal, splitterMain);
splitterLeftDown->addWidget(QWidget* widget); //将控件 widget 添加到 splitterLeftDown 分割窗口中

2)设置分割窗口的比例

//第一个参数表示的是分割窗口的ID,第二个窗口表示的是比例大小

splitterMain->setStretchFactor(0, 1);       //设定上、中、下三部分的比例为1:3:1
splitterMain->setStretchFactor(1, 3);
splitterMain->setStretchFactor(2, 1);

splitterLeftCenter->setStretchFactor(0, 2); //设定中间部分的左、右部分的比例为2:1
splitterLeftCenter->setStretchFactor(1, 2);

3)设置分割条是否可以拖动

//用于指定分隔条是否可以拖动,其中 handle(1) 表示第1条分隔条不可拖动
QSplitterHandle *splitterMainHandle = splitterMain->handle(1);
if(splitterMainHandle)
{
    //Disable the Middle Line, it can't adjust.
    splitterMainHandle->setDisabled(true);
}

4)设置分割条的样式

splitterMain->setStyleSheet("QSplitter::handle{background-color:white}");   //设置分割条样式
splitterMain->setHandleWidth(5);                                            //设置分割条宽度

5)设置分割窗口可变

//添加一个布局,使分隔窗口随着控件一起变化
mainLayout = new QGridLayout(this);

mainLayout->addWidget(splitterMain, 0, 0);

6)显示

//显示
splitterMain->show();

8、堆栈窗口:QStackedWidget

1)新建:

QStackedWidget *stackWindow = new QStackedWidget(this);

2)添加窗口:

stackWindow->addWidget(QWidget *widget);    //其中widget表示建立的窗口控件

3)显示窗口:

stackWindow->setCurrentIndex(ID);    //其中ID表示堆栈窗口中子窗口的ID号,ID号与添加子窗口的顺序有关,从0开始

猜你喜欢

转载自blog.csdn.net/bailang_zhizun/article/details/79849853