Qt基本控件详解(二)

承上启下

Containes — (Group Box、Scroll Area、Tab Widget、Stacket Widget、Dock Widget)
QListWidget (列表控件)
QTableWidget (表格控件)
QTreeWidget(树形控件)

理解Qt Ui设计框架

Qt事件循环

  • 界面停留2秒后自动消失
 QApplication a(argc, argv);
 MainWindow w;3    w.show();
 Sleep(2000); //need #include <Windows.h>
 //return a.exec();
class Q_GUI_EXPORT QApplication : public QCoreApplication.
class Q_CORE_EXPORT QCoreApplication : public QObject
class Q_CORE_EXPORT QObject
  • 程序入口argc argv
/**
 * @brief qMain 程序入口
 * @param argc 命令行变量的数量
 * @param argv 命令行变量的数组 (鼠标键盘命令)
 * @return
 */
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qDebug() << "argc " << argc;
	for (int i = 0; i < argc; i++ )
	{
		qDebug() << argv[i];
	}
    return a.exec();
}
  • UI文件
ui->setupUi(this);
  • 从Qt设计器中窥视Qt的继承关系

添加progressBar到stateBar

观察QtCreator发现状态栏中有个进度条

  • showMessage
ui -> statusBar -> showMessage("message", 2000);
ui -> statusBar -> showMessage("message2");
  • addPermanentWidget
QProgressBar *pStateProgressBar = new QProgressBar(this);
ui->statusBar->addPermanentWidget(pStateProgressBar);

pStateProgressBar->setValue(55);

pStateProgressBar->setAlignment(Qt::AlignCenter);
//如果不记得怎么使用可以借助ui->setupUi(this);

Containers

groupBox

QGroupBox为构建分组提供了支持,通常包含一个边框和一个标题栏,作为容器部件来使用,在其中可以布置各种窗口部件。

scrollArea

QScrollArea提供了一个滚动视图到另外一个部件,滚动区域用于显示一个画面的子部件的内容。如果部件超过画面的大小,视图可以提供滚动条,这样就都可以看到部件的整个区域。

  • UI属性设置
  • 添加一个带图片的lable
 QLabel *pImageLable = new QLabel(this);
    pImageLable->setPixmap(QPixmap(":/png/3.jpg"));
    ui->scrollArea->setWidget(pImageLable);

ToolBox

QToolBox类提供了一个选项卡式的条目。QToolBox可以在一个tab列上显示多个Item ,并且当前的item显示在当前的tab下面。每个tab都在tab列中有一个索引位置。tab的item是一个QWidget ,例如QQ的联系人就是QToolBox

  • ui属性

  • 添加item

tabWidget

QTabWidget类提供了一系列的Tab选项卡的切换,每个选项卡下有自己的控件;原理和toolBox一样
WPS上方一排就是TabWidget

  • ui属性

stackedWidget

QStackedWidget理解为层叠窗口(堆栈窗口),提供了多页面切换的布局,每个选项卡下有自己的控件, QStackedWidget类提供了多页面切换的布局,一次只能看到一个界面。

还是以WPS为例

在QtCreator中:

  • Demo:实现页面切换
// 使用pushButton来触发页面的切换
void Widget::on_pushButton_clicked()
{
    ui->stackedWidget->setCurrentIndex(0);

}

void Widget::on_pushButton_2_clicked()
{
    ui->stackedWidget->setCurrentIndex(1);
}

void Widget::on_pushButton_3_clicked()
{
    ui->stackedWidget->setCurrentIndex(2);
}

qFrame

QFrame类是带有边框的部件的基类。它的子类有我们最为常用的标签部件QLabel,另外还有QLCDNumber、QSplitter、QStackedWidget、QToolBox和QAbstractScrollArea类。

带边框部件最主要的特点就是可以有一个明显的边界框架。QFrame类的主要功能也就是用来实现不同的边框效果,这主要是由边框形状(Shape)和边框阴影(Shadow)组合来形成的

qWidget

QWidget类是所有用户界面对象的基类,被称为基础窗口部件,它可以作为其他部件的容器。
QWidget继承自QObject类和QPaintDevice类,其中QObject类是所有支持Qt对象模型(Qt Object Model)的Qt对象的的基类,QPaintDevice类是所有可以绘制的对象的基类。

mdiArea

QMdiArea一般使用与主窗口中,用于容纳多个子窗口

  • 添加子窗口

DockWidget

QDockWidget类:理解为悬浮(停靠)窗口,提供了一个特殊的窗口部件,它可以是被锁在QMainWindow窗口内部或者是作为顶级窗口悬浮在桌面上。

只能使用在MinWindow类才有


Qt官方有个很好的Demo

axWidget

Qt的windows商业版本提供了ActiveQt这个framework,使用这个组件我们可以在Qt中使用ActiveX控件,并且也开发基于Qt的ActiveX控件。
QAxContainer不包含在QtCore里面,所以要使用QAxContainer的话还必须要在.pro文件中添加 CONFIG+=qaxcontainer

不能跨平台,谨慎使用!

ItemWidget

ListWidget

QListWidget类列表框控件用来加载并显示多个列表项。QListWidgetItem类就是列表项类。

  • ui属性
  • ui添加item方法,双击可以进入编辑item界面
  • 可以单独控制某一个item的属性
    重点属性:能不能被编辑 flags-> Editable
  • 代码添加item方法:
ui -> listWidget -> addItem("item1");

TreeWidget

tabWidget

##标准对话框

标准消息对话框

  • 标准警告对话框
1 void Widget::on_pushButtonCirticalMessage_clicked() 
{ 
	QMessageBox::StandardButton reply; 
	reply = QMessageBox::critical(this, 	QString::fromLocal8Bit("标准警告对话框"), 
			QString::fromLocal8Bit("这里填写需要警	告的内容"),
			QMessageBox::Abort | QMessageBox::Retry | QMessageBox::Ignore); 

	//使用reply 接住用户的选择 
	if (reply == QMessageBox::Abort) 
		ui‐>lineEditCritical‐>setText(tr("Abort")); 
	else if (reply == QMessageBox::Retry) 
		ui‐>lineEditCritical‐>setText(tr("Retry")); 
	else 
		ui‐>lineEditCritical‐>setText(tr("Ignore")); 
}

  • 自定义标准警告对话框
void Widget::on_pushButtonCustomMsg_clicked()
{
    QMessageBox msgBox;

    msgBox.setText(QString::fromLocal8Bit("是否保持文件?"));
    msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No
                              | QMessageBox::Cancel);
    msgBox.setButtonText(QMessageBox::Yes,  QString::fromLocal8Bit("是"));
    msgBox.setButtonText(QMessageBox::No,  QString::fromLocal8Bit("否"));
    msgBox.setButtonText(QMessageBox::Cancel,  QString::fromLocal8Bit("取消"));

    int ret = msgBox.exec();
    switch (ret)
    {
    case QMessageBox::Yes:
        ui->lineEditCustomMsg->setText("Yes");
        break;
    case QMessageBox::No:
        ui->lineEditCustomMsg->setText("No");
        break;
    case QMessageBox::Cancel:
        ui->lineEditCustomMsg->setText("Cancel");
        break;
    default:
        break;
    }
}

标准文件对话框

QFileDialog:

标准颜色对话框

QColorDialog:

标准字体对话框

QFontDialog:

标准输入对话框

QInputDialog:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

√沫影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值