Qt基础总结day2

1 QMainWindow

1.1 菜单栏 最多有一个

1.1.1  QMenuBar * bar = MenuBar();

1.1.2  setMenuBar( bar )

1.1.3  QMenu * fileMenu = bar -> addMenu(“文件”)   创建菜单

1.1.4  QAction * newAction =  fileMenu ->addAction(“新建”); 创建菜单项

1.1.5  添加分割线 fileMenu->addSeparator();

1.2 工具栏 可以有多个

1.2.1 QToolBar * toolbar = new QToolBar(this);

1.2.2 addToolBar( 默认停靠区域, toolbar );  Qt::LeftToolBarArea

1.2.3 设置  后期停靠区域,设置浮动,设置移动

1.2.4 添加菜单项 或者添加 小控件

//只允许左右

addToolBar(Qt::RightToolBarArea, toolBar);

toolBar->setAllowedAreas(Qt::RightToolBarArea | Qt::LeftToolBarArea); //(左右可以放到任意位置)

toolBar->setFloatable(false); //设置浮动(设置左右后会自己回到左右)

toolBar->setMovable(true); //设置移动(总开关)

1.3 状态栏  最多一个

1.3.1 QStatusBar * stBar = statusBar();

1.3.2 设置到窗口中 setStatusBar(stBar);

1.3.3   stBar->addWidget(label);放左侧信息

1.3.4   stBar->addPermanentWidget(label2); 放右侧信息

1.4 铆接部件  浮动窗口  可以多个

1.4.1 QDockWidget

1.4.2 addDockWidget( 默认停靠区域,浮动窗口指针)

1.4.3 设置后期停靠区域

QDockWidget * dockWidget = new QDockWidget("浮动",this);

addDockWidget(Qt::BottomDockWidgetArea,dockWidget); //下边

//只上下边

dockWidget->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);

1.5 设置核心部件  只能一个

1.5.1 setCentralWidget(edit);

2 资源文件

2.1 将图片文件 拷贝到项目位置下

2.2 右键项目->添加新文件 –>  Qt - > Qt recourse File   - >给资源文件起名

2.3 res 生成  res.qrc  

2.4 open in editor  编辑资源

2.5 添加前缀  添加文件

2.6 使用  “ : + 前缀名 + 文件名 ”

3 对话框

3.1 分类 :

3.1.1 模态对话框   不可以对其他窗口进行操作 阻塞

3.1.1.1 QDialog  dlg(this)

3.1.1.2 dlg.exec();

3.1.2 非模态对话框  可以对其他窗口进行操作

3.1.2.1 防止一闪而过 创建到堆区

3.1.2.2 QDialog * dlg = new QDialog(this)

3.1.2.3 dlg->show();

3.1.2.4 dlg2->setAttribute(Qt::WA_DeleteOnClose); //55号 属性 关的时候自动delete 没有这句把系统溢出

3.2 标准对话框 --  消息对话框

3.2.1 QMessageBox 静态成员函数  创建对话框

3.2.2 错误、信息、提问、警告

3.2.3 参数1  父亲 参数2  标题  参数3  显示内容 参数4  按键类型  参数5 默认关联回车按键

3.2.4 返回值 也是StandardButton类型,利用返回值判断用户的输入

3.3 其他标准对话框

3.3.1 颜色对话框  QColorDialog::getColor

3.3.2 文件对话框  QFileDialog::getOpenFileName(父亲,标题,默认路径,过滤文件)

3.3.3 字体对话框  QFontDialog::getFont

4 界面布局

4.1 实现登陆窗口

4.2 利用布局方式 给窗口进行美化

4.3 选取 widget  进行布局 ,水平布局、垂直布局、栅格布局

4.4 给用户名、密码、登陆、退出按钮进行布局

4.5 默认窗口和控件之间 有9间隙,可以调整 layoutLeftMargin

4.6 利用弹簧进行布局

5 控件

5.1 按钮组

5.1.1 QPushButton  常用按钮

5.1.2 QToolButton  工具按钮  用于显示图片,如图想显示文字,修改风格:toolButtonStyle , 凸起风格autoRaise

5.1.3 radioButton  单选按钮,设置默认 ui->rBtnMan->setChecked(true); 

5.1.4 checkbox 多选按钮,监听状态,2 选中  1 半选 0 未选中

5.1.5 QCommandLinkButton 命令链接按钮 正常的按钮上的文字描述文本外,默认情况下,它也将携带一个箭头图标,表明按下按钮将打开另一个窗口或页面

5.1.6 QDialogButtonBox 对话框

5.2 QListWidget 列表容器

5.2.1 QListWidgetItem * item 一行内容

5.2.2 ui->listWidget ->addItem ( item )

5.2.3 设置居中方式 item->setTextAlignment(Qt::AlignHCenter);

5.2.4 可以利用addItems一次性添加整个诗内容

5.3 QTreeWidget 树控件

5.3.1 设置头  

5.3.1.1 ui->treeWidget->setHeaderLabels(QStringList()

5.3.2 创建根节点

5.3.2.1 QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()

5.3.3 添加根节点 到 树控件上

5.3.3.1 ui->treeWidget->addTopLevelItem(liItem);

5.3.4 添加子节点

5.3.4.1 liItem->addChild(l1);

5.4 QTableWidget 表格控件

5.4.1 设置列数

5.4.1.1 ui->tableWidget->setColumnCount(3);

5.4.2 设置水平表头

5.4.2.1 ui->tableWidget->setHorizontalHeaderLabels(QStringList()

5.4.3 设置行数

5.4.3.1 ui->tableWidget->setRowCount(5);

5.4.4 设置正文

5.4.4.1 ui->tableWidget->setItem(0,0, new QTableWidgetItem("亚瑟"));

5.5 其他控件介绍

5.5.1 stackedWidget  栈控件

5.5.1.1 ui->stackedWidget->setCurrentIndex(1);

5.5.2 下拉框

5.5.2.1 ui->comboBox->addItem("奔驰");

5.5.3 QLabel 显示图片或文本

5.5.3.1 ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"))

5.5.4 QLabel显示动图  gif图片

5.5.4.1 ui->lbl_movie->setMovie(movie);

5.5.4.2 movie->start();

5.6 输入窗口部件

5.6.1 QComboBox 下拉框 下拉组合框的组件

comboBox->addItem("广东(默认)");

5.6.2 QFontComboBox 下拉选择字体系列的组合框小部件

/* 定义一个字符串接收当前项的字体 */

QString str = "用此标签显示字体效果\n设置的字体为:" +

fontComboBox->itemText(fontComboBox->currentIndex());

5.6.3 QLineEdit 单行文本编辑器

5.6.4 QTextEdit 文本编辑框

/* 全选 */ textEdit->selectAll();

/* 清空textEdit里的文本内容 */ textEdit->clear();

5.6.5 QPlainTextEdit 文本浏览编辑器

/* 设置为只读模式 */ 4

plainTextEdit->setReadOnly(true);

QFile file("moc_mainwindow.cpp");

/* 以只读模式打开,但是可以在plainTextEdit里编辑 /

file.open((QFile::ReadOnly | QFile::Text));

/ 加载到文件流 /

QTextStream in(&file);

/ 从文本流中读取全部 */

plainTextEdit->insertPlainText(in.readAll());

5.6.6 QSpinBox 微调框小部件

/* 设置范围0~100 /

spinBox->setRange(0, 100);

/ 设置步长为10 /

spinBox->setSingleStep(10);

/ 设置初始值为100 */

spinBox->setValue(100);

/* 设置后缀 */

spinBox->setSuffix("%不透明度");

/* 转换为double数据类型 /

double dobleopacity = (double)opacity / 100;

/ 设置窗体不透明度,范围是0.0~1.0。1则为不透明,0为全透明 */

this->setWindowOpacity(dobleopacity);

5.6.7 QDoubleSpinBox 用于处理浮点值微调框小部件

/* 设置前缀 */

doubleSpinBox->setPrefix("窗口大小");

5.6.8 QDateTimeEdit 一个用于编辑日期和时间的小部件 QTimeEdit QDateEdit

/实例化对象,传入当前日期与时间/

dateTimeEdit = new QDateTimeEdit( QDateTime::currentDateTime(),this);

dateTimeEdit->setGeometry(300, 200, 200, 30);

/* 弹出日期控件与否 /

//dateTimeEdit->setCalendarPopup(true);

/ 实例化对象,传入当前时间 /

timeEdit = new QTimeEdit(QTime::currentTime(),this);

timeEdit->setGeometry(300, 240, 200, 30);

/ 实例化对象,传入当前日期 */

dateEdit = new QDateEdit(QDate::currentDate(),this);

dateEdit->setGeometry(300, 280, 200, 30);

5.6.9 QDial 一个圆形范围控制(如速度计或电位器)

/* 实例化对象和设置显示位置与大小 /

dial = new QDial(this);

dial->setGeometry(300, 100, 200, 200);

/ 设置页长(两个最大刻度的间距)/

dial->setPageStep(10);

/ 设置刻度可见 /

dial->setNotchesVisible(true);

/ 设置两个凹槽之间的目标像素数 /

dial->setNotchTarget(1.00);

/ 设置dial值的范围 /

dial->setRange(0,100);

/ 开启后可指向圆的任何角度 /

//dial->setWrapping(true);

5.6.10 QScrollBar 垂直或水平滚动条

/* 实例化水平滚动条及设置位置大小 /

horizontalScrollBar = new QScrollBar(Qt::Horizontal, this);

horizontalScrollBar->setGeometry(0, 450, 800, 30);

/ 实例化垂直滚动条及设置位置大小 */

verticalScrollBar = new QScrollBar(Qt::Vertical, this);

verticalScrollBar->setGeometry(770, 0, 30, 480);

5.6.11 QSlider 垂直或水平滑动条小部件

/* 当水平滑动条的值改变时,改变垂直滑动条的值 /

verticalSlider->setSliderPosition(val);

/ 将int类型转变成字符 */

QString str = "滑动条值:" + QString::number(val);

5.6.12 QKeySequenceEdit 自定义快捷键

/* 判断输入的组合键是否为Ctrl + Q,如果是则退出程序 /

if(keySequence == QKeySequence(tr("Ctrl+Q"))) {

/ 结束程序 /

this->close();

}else {

/ 打印出按下的组合键 */

qDebug()

}

5.7 显示窗口部件

5.7.1 QCalendarWidget 基于月的日历小部件

QFont font;

/* 设置日历里字体的大小为10像素 */

font.setPixelSize(10);

calendarWidget->setFont(font);

/* 当日历点击改变当前选择的期时,更新Label的显示内容 */

QString str = "当前选择的日期:" + calendarWidget->selectedDate().toString();

label->setText(str);

/* 设置当前选定的日期为系统的QDate */

calendarWidget->setSelectedDate(QDate::currentDate());

5.7.2 QLCDNumber 显示一个类似于lcd的数字

/* 设置显示的位数8位 /

lcdNumber->setDigitCount(8);

/ 设置样式 /

lcdNumber->setSegmentStyle(QLCDNumber::Flat);

/ 设置lcd显示为当前系统时间 /

QTime time = QTime::currentTime();

/ 设置显示的样式 */

lcdNumber->display(time.toString("hh:mm:ss"));

5.7.3 QProgressBar 一个水平或垂直的进度条

/*样式表设置,常用使用setStyleSheet来设置样式(实现界面美化的功能),

* 具体可参考styleSheet */

progressBar->setStyleSheet (

"QProgressBar{border:8px solid #FFFFFF;"

"height:30;" 17 "border-image:url(:/images/battery.png);" //背景图片

"text-align:center;" // 文字居中

"color:rgb(255,0,255);"

"font:20px;" // 字体大小为20px

"border-radius:10px;}"

"QProgressBar::chunk{"

"border-radius:5px;" // 斑马线圆角

"border:1px solid black;" // 黑边,默认无边

"background-color:skyblue;"

"width:10px;margin:1px;}" // 宽度和间距

);

/* 设置progressBar的范围值 /

progressBar->setRange(0, 100);

/ 初始化value为0 /

value = 0;

/ 给progressBar设置当前值 /

progressBar->setValue(value);

/ 设置当前文本字符串的显示格式 */

progressBar->setFormat("充电中%p%");

5.7.4 QFrame 有框架的窗口部件的基类

QFrame继承QWidget。QFrame类是有框架的窗口部件的基类,它绘制框架并且调用一个虚函数drawContents()来填充这个框架。这个函数是被子类重新实现的。这里至少还有两个有用的函数:drawFrame()和frameChanged()。

QPopupMenu使用这个来把菜单“升高”,高于周围屏幕。QProgressBar有“凹陷”的外观。QLabel有平坦的外观。这些有框架的窗口部件可以被改变。

QFrame::Shape这个枚举类型定义了QFrame的框架所使用的外形。当前定义的效果有:

 NoFrame - QFrame不画任何东西

 Box - QFrame在它的内容周围画一个框

 Panel - QFrame画一个平板使内容看起来凸起或者凹陷

 WinPanel - 像Panel,但QFrame绘制三维效果的方式和Microsoft Windows 95(及其它)的一样

 ToolBarPanel - QFrame调用QStyle::drawToolBarPanel()

 MenuBarPanel - QFrame调用QStyle::drawMenuBarPanel()

 HLine - QFrame绘制一个水平线,但没有框任何东西(作为分隔是有用的)

 VLine - QFrame绘制一个竖直线,但没有框任何东西(作为分隔是有用的)

 StyledPanel - QFrame调用QStyle::drawPanel()

 PopupPanel - QFrame调用QStyle::drawPopupPanel()

阴影风格有:

 Plain使用调色板的前景颜色绘制(没有任何三维效果)。

 Raised使用当前颜色组的亮和暗颜色绘制三维的凸起线。

 Sunken使用当前颜色组的亮和暗颜色绘制三维的凹陷线。

/* 实例化 */
 hline = new QFrame(this); 
/* 确定起始点,设置长和宽,绘制距形 */
 hline->setGeometry(QRect(200, 100, 400, 40)); 
/* 设置框架样式为Hline,水平,可设置为其他样式例如Box, 
* 由于是样式选择HLine,所以只显示一条水平直线 */ 
hline->setFrameShape(QFrame::HLine); 
/* 绘制阴影 */ 
hline->setFrameShadow(QFrame::Sunken); 
/* 实例化 */ 
vline = new QFrame(this); 
/* 确定起始点,设置长和宽,绘制距形 */ 
vline->setGeometry(QRect(300, 100, 2, 200)); 
/* 设置框架样式为Vline,垂直,可设置为其他样式例如Box, 
* 由于是样式选择Vline,所以只显示一条垂直直线 */ 
vline->setFrameShape(QFrame::VLine); 
/* 绘制阴影 */ 
vline->setFrameShadow(QFrame::Sunken);

5.8 显示窗口之游览器

5.8.1 QTextBrowser 具有超文本导航的文本浏览器

/* 实例化 /

textBrowser = new QTextBrowser(this);

/ 将文本浏览器窗口居中 /

this->setCentralWidget(textBrowser);

/ 实例化 /

openAction = new QAction("打开",this);

/ ui窗口自带有menubar(菜单栏)、mainToolbar(工具栏)与

* statusbar(状态栏)

* menuBar是ui生成工程就有的,所以可以在menubar里添加

* 我们的QActiont等,如果不需要menubar,可以在ui设计

* 窗口里,在右则对象里把menubar删除,再自己重新定义自己的

* 菜单栏

/

/ 将动作添加到菜单栏 */

ui->menubar->addAction(openAction);

/* 调用系统打开文件窗口,过滤文件名 /

QString fileName = QFileDialog::getOpenFileName(

this,tr("打开文件"),"",

tr("Files(.txt *.cpp *.h *.html .htm)")

);

QFile myFile(fileName);

/ 以只读、文本方式打开,若打开失败,则返回 /

if(!myFile.open(QIODevice::ReadOnly | QIODevice::Text))

return;

/ 用QTextStream对象接收 /

QTextStream in (&myFile);

/ 读取全部数据 */

QString myText = in.readAll();

/* 判断打开文件的后缀,如果是html格式的则设置文本浏览器为html格式 /

if(fileName.endsWith("html") || fileName.endsWith("htm")){

textBrowser->setHtml(myText);

} else {

textBrowser->setPlainText(myText);

}

/ ui窗口自带有statusbar(状态栏),设置打开的文件名 */

ui->statusbar->showMessage("文件名:" + fileName);

5.8.2 QGraphicsView 基于图元的模型/视图编程

/* 实例化场景对象 /

graphicsScene = new QGraphicsScene(this);

/ 在QGraphicsView设置场景 /

graphicsView->setScene(graphicsScene);

/ 将动作添加到菜单栏 */

openAction = new QAction("打开",this)

ui->menubar->addAction(openAction);

/调用系统打开文件窗口,设置窗口标题为“打开文件”,过滤文件名/

QString fileName = QFileDialog::getOpenFileName(

this,tr("打开文件"), "",

tr("Files(*.png *.jpg .bmp)")

);

/ 定义QPixmap对象,指向fileName /

QPixmap image(fileName);

/ 将image用scaled来重新设置长宽为graphicsView的长宽,

* 保持纵横比等

/ 假若用户没选择文件,则返回 */

if(image.isNull())

return;

image = image.scaled(graphicsView->width(),

graphicsView->height(),

Qt::KeepAspectRatio,

Qt::FastTransformation 61 );

/* 在添加场景内容前,先清除之前的场景内容 /

graphicsScene->clear();

/ 添加场景内容image /

graphicsScene->addPixmap(image);

/ ui窗口自带有statusBar(状态栏),设置打开的文件名 */

ui->statusbar->showMessage("文件名:" + fileName);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值