当前位置: 首页 > news >正文

官方网站建设银行在什么网站可以接活做

官方网站建设银行,在什么网站可以接活做,誉重网站建设公司,深圳影视广告在哪里好目录 1.控件概述 2. QWidget 核⼼属性 设置组件是否可用 获取组件当前位置和尺⼨ QWidget的图标 组件的透明度设置 QWidget光标的设置 字体的设置 组件提示 设置组件获取到焦点的策略 stylesheet样式表 3.常用组件 QPushButton RadioButton Check Box QLabel …目录 1.控件概述 2. QWidget 核⼼属性 设置组件是否可用 获取组件当前位置和尺⼨ QWidget的图标 组件的透明度设置 QWidget光标的设置 字体的设置 组件提示 设置组件获取到焦点的策略 stylesheet样式表 3.常用组件 QPushButton RadioButton Check Box QLabel LCD Number QProgessBar Calender Widget Line Edit QTextEdit QCombo Box QDateTimeEdit QDial QverticalSlider 4.多元素控件 QListWidget QTabelWidget QTree Widget 5.容器类控件 Group Box QTab Widget 布局管理器 垂直布局QVBoxLayout ⽔平布局QHBoxLayout 网格布局QGridLayout 表单布局 Spacer 1.控件概述 对于QT窗口的开发QT本身已经为我们内置了许多控件我们直接就可以拿来用不过我们需要 对这些控件了解清除。    Widget 是 Qt 中的核⼼概念. 英⽂原义是 ⼩部件, 我们此处也把它翻译为 控件 . 控件是构成⼀个图形化界⾯的基本要素。按钮, 列表视图, 树形视图, 单⾏输⼊框, 多⾏输⼊框, 滚动条, 下拉框等, 都可以称为 控件. Qt 作⼀个成熟的 GUI 开发框架, 内置了⼤量的常⽤控件. 这⼀点在 Qt Designer 中就可以看到端倪。 2. QWidget 核心属性 在 Qt 中, 使⽤ QWidget 类表⽰ 控件. 像按钮, 视图, 输⼊框, 滚动条等具体的控件类, 都是继承⾃ QWidget. 可以说, QWidget 中就包含了 Qt 整个控件体系中。 每一个控件都有许多属性我们可以通过查询文档来了解控件的属性一般我们在设置对应的属性使用set属性名就是对应得方法这里我们简单的介绍一些属性。 设置组件是否可用 isEnabled() 获取当前组件状态是否为可用返回值为bool setEnabled 设置控件是否可使⽤. true 表⽰可⽤, false 表⽰禁⽤. 获取组件当前位置和尺⼨ 其实是四个属性的统称: • x 横坐标    • y 纵坐标     • width 宽度      • height ⾼度 move移动部件的位置xygeometry 位置和尺⼨. 包含 x, y, width, height 四个部分.其中坐标是以左上角 为参考进⾏设置的.返回值为一个Qrect对象。  FrameGometry与geometry作用一样不过范围包括窗口标题窗口栏额外区域 WindowTile 设置窗口标题 对于Qrect对象对于它的四个坐标进行加减 加一个正数  x:向右移动      y向下移动     width向右延长    height:向下延长 加一个负数  x:向左移动      y向上移动     width向左缩小    height:向上缩小 move 移动以左上角为起点为当前给定的坐标。 int widthui-pushButton_refuse-width();int heightui-pushButton_refuse-height();int xrand()%width;int yrand()%height;ui-pushButton_refuse-move(x,y);QRect rect1ui-pushButton_accept-frameGeometry();//范围包括了window FrameQRect rect2ui-pushButton_accept-geometry();//范围包括了window FrameqDebug()rect1;qDebug()rect2; QWidget的图标 WindowIcon获取 widget 图标  返回QIcon,只针对顶层窗口setWindowIcon设置 widget 图标  参数为QIcon对象,只针对顶层窗口 对于图片资源等使用我们在开发中并不能保证用户的路径与我们这里的一致并且确保用户不会搞没我们的图片因此QT右提供了一种方法我们可以在该项目中在引入一个xml文件-后缀为qrc文件将你使用的资源导入该文件里即可QT在编译时会自动提取相关数据并编译到程序当中。 不过无法导入资源较大的文件文件名不要带中文与特殊符号。 qrc的本质是把图片二进制数据提取转为c代码之后再编译到exe中所以我们需要把文件导入qrc文件中 1.创建前缀profix 2.导入资源 --要求该资源的目录在与qrc的同级目录或者子目录。 QIcon imag(:/R.jpg);//构建qrc文件进行资源导入this-setWindowIcon(imag);float opacitythis-windowOpacity();qDebug()opacity; 组件的透明度设置 WindowOpacity() 获取 widget 透明度,取值0.0-1.00是完全透明1是完全不透明setWindowOpacity() 设置 widget 透明度,取值0.0-1.00是完全透明1是完全不透明 这里注意浮点数使用的是IEE754的标准二进制表示有效数字每一位是一个小数0.50.250.125最后按照权重相加由于flaot与double长度有限因有效数组表示范围有限最后很难凑出0.1这样的数因此平时写代码的时候两个浮点数不能直接这样有概率两个数不是相等的可以做差比较。 在进行模块交互的时候我们一般获取用双重判定使得在交互中即使出现了问题也不会出现较大的问题。集体开发代码编写参考《代码大全》这本书。 QWidget光标的设置 cursor() ⿏标悬停时显⽰的图标形状. 是普通箭头, 还是沙漏, 还是⼗字等形状  在 Qt Designer 界⾯中可以清楚看到可选项. setCursor()设置光标形状只有处于widget时才生效QGuiApplication::setOverrideCursor(const Cursor cursor)设置全局的光标形状 光标的设置我们既可以手动设置也可以进行ui设置找到Cursor属性进行设置使用setShape方法QT中内置了许多光标形状。   除此之外还可以用多种对象构造光标 可以使用图像设置光标除此之外我们还可以去阿里巴巴的iconfont网站寻找你的素材 QPixmap pixmap(:/basketball.png);//该对象可表示一个照片pixmappixmap.scaled(20,20);//缩放或者设置大小后重新赋值QCursor sor(pixmap,10,10);//默认图片左上角作为实际光标点击我们还可以设置为1010 字体的设置 一般用来设置组件的文本文字 font获取当前widget的字体信息返回Qfont对象setFont()设置字体 首先创建字体对象进行属性设置之后在创建Qpalette对象进行setcolor设置最后将这两个对象设置到组件中。 //文本设置以标签为例QLabel * label new QLabel (this);label-move(80,30);label-setText(修对故人思故国且将新火试新茶诗酒趁年华);QFont font;font.setFamily(仿宋);//字体font.setBold(true);//加粗font.setPixelSize(30);//字体大小font.setItalic(true);//倾斜font.setUnderline(true);//下划线label-setFont(font);QPalette green; //设置字体颜色green.setColor(QPalette::WindowText,Qt::green);label-setPalette(green); // 设置QLabel的颜色 组件提示 setToolTip 设置 toolTip. ⿏标悬停在该 widget 上时会有提⽰说明. setToolTipDuring 设置 toolTip 提⽰的时间. 单位 ms. 时间到后 toolTip ⾃动消失. ui-pushButton_accept-setToolTip(按下则女神接受); ui-pushButton_accept-setToolTipDuration(2000); 设置组件获取到焦点的策略 简单来说假设有一个文本框只有选中之后才能输入此时就是获取该组件的焦点一般对于键盘输入较为明显。 比如说选中文本框输入判断是否跳出此页面都是聚焦实现的。 focusPolicy() 获取该 widget 的 focusPolicy, 返回 Qt::FocusPolicy setFocusPolicy(Qt::FocusPolicy policy) 设置 widget 的 focusPolicy 返回的focusPolicy是一个枚举类型包括如下 Qt::FocusPolicy 是⼀个枚举类型. 取值如下 • Qt::NoFocus 控件不会接收键盘焦点   --键盘无法输入 • Qt::TabFocus 控件可以通过Tab键接收焦点 • Qt::ClickFocus 控件在⿏标点击时接收焦点 • Qt::StrongFocus 控件可以通过Tab键和⿏标点击接收焦点 (默认值) • Qt::WheelFocus : 类似于 Qt::StrongFocus , 同时控件也通过⿏标滚轮获取到焦点 (新增 的选项, ⼀般很少使⽤). 以LineEdit为例创建两个文本框按下table键就会自动跳到下一个文本框或者使用鼠标点击选中这都是通过鼠标或者键盘去获取组件的焦点当然我们也可以修改它这个聚焦类型如上面的设置TableFcous就会使得只能使用table键进行选择聚焦。 stylesheet样式表 通过 CSS 设置 widget 的样式. CSS (Cascading Style Sheets 层叠样式表) 本⾝属于⽹⻚前端技术. 主要就是⽤来描述界⾯的 样式. 所谓 样式, 包括不限于 ⼤⼩, 位置, 颜⾊, 间距, 字体, 背景, 边框等. 我们平时看到的丰富多彩的⽹⻚, 就都会⽤到⼤量的 CSS. Qt 虽然是做 GUI 开发, 但实际上和 ⽹⻚前端 有很多异曲同⼯之处. 因此 Qt 也引⼊了对于 CSS的⽀持----- QSS. 我们还是以两种方式来实验 以ui界面为例 或者右键有一个改变样式表 样式表内是以键值对的形式进行设置。 我们也可以通过代码的方式进行央视的设置。具体里面可以写的内容设置的样式我们都可以向官方文档。 官网的样式表链接http://doc.qt.io/archives/qt-4.8/stylesheet.html 各种控件的样式http://doc.qt.io/archives/qt-4.8/stylesheet-reference.html QSS语法http://www.w3school.com.cn/css/css_syntax.asp 这里建议具体内容参考CSS来看 this-setStyleSheet(background-color:white;);ui-lineEdit-setStyleSheet(background-color:green;color:white; );ui-pushButton-setStyleSheet(color:white;);ui-pushButton_2-setStyleSheet(color:white;); 当然对于颜色是有无数种的计算机中使用RGB进行颜色设计使用一个字节G一个字节B一个字节R255则表示对应颜色拉满一般我们使用取色器去获取其他颜色的字节表示。 3.常用组件 这些组件都继承子Qwidget. QPushButton QPushButton就是一个简单的按钮也是我们最常用最熟悉的按钮他是继承了QAbstrcatButton。 属性 说明 tex 按钮中的⽂本 icon 按钮中的图标 iconSize 按钮中图标的尺⼨ shortCut 按钮对应的快捷键 autoRepeat 按钮是否会重复触发. 当⿏标左键按住不放时, 如果设为 true, 则会持续产⽣⿏标点击事件; 如果设为 false, 则必须释放⿏标, 再次按下⿏标时才能产⽣点击事件. (相当于游戏⼿柄上的 连发 效果) autoRepeatDelay 重复触发的延时时间. 按住按钮多久之后, 开始重复触发. autoRepeatInterval 重复触发的周期. //设置按钮图标QRect rectui-pushButton_godess-geometry();ui-pushButton_godess-setGeometry(rect.x(),rect.y(),50,50);QIcon icon(QPixmap(:/start.png));ui-pushButton_godess-setIcon(icon);ui-pushButton_godess-setIconSize(QSize(50,50));//设置图标的大小ui-pushButton_godess-setFlat(true);//设置边框不可见 RadioButton 单选按钮使我们可以多个选项中选择一个除了以上相同的属性外radiobutton存在着与之不同的方法。 checkable是否能选中checked是否已经被选中. checkable 是 checked 的前提条件.autoExclusive 选中⼀个按钮之后是否会取消其他按钮的选中. 对于 QRadioButton 来说默认就是排他的 多个单选按钮在选择的时候默认来说是选择一个的。 可是如果我们在这么多单选按钮中需求是分为几组每组中只有一个才可以被选择如何实现呢? QT中引入了QButtonGroup对按钮进行分组。 我们只需与将需要的按钮放到一个组中即可实现按钮分组此时单选按钮单旋只作用的在一个组中。 QButtonGroup *groupnew QButtonGroup();group-addButton(ui-radioButton_test);group-addButton(ui-radioButton_test1); Check Box Check Box表示复选按钮一次性可以选择多个和 QCheckBox 最相关的属性也是 checkable 和 checked , 都是继承⾃ QAbstractButton . ⾄于 QCheckBox 独有的属性 tristate ⽤来实现 三态复选框 不过这个东西比较冷门。 用法基本类似只不过复选按钮没有单选按钮的排他机制了。 QLabel QLabel是一种显示组件名叫标签.以下是关于QLabel的属性 text QLabel 中的⽂本textFormat⽂本的格式. • Qt::PlainText 纯⽂本 • Qt::RichText 富⽂本(⽀持 html 标签) • Qt::MarkdownText markdown 格式 • Qt::AutoText 根据⽂本内容⾃动决定⽂本格式. pixmapQLabel 内部包含的图⽚. scaledContents 设为 true 表⽰内容⾃动拉伸填充 QLabel设为 false 则不会⾃动拉伸alignment对⻬⽅式.可以设置⽔平和垂直⽅向如何对⻬.wordWrap 设为 true 内部的⽂本会⾃动换⾏. 设为 false 则内部⽂本不会⾃动换⾏. indent设置⽂本缩进. ⽔平和垂直⽅向都⽣效.margin 内部⽂本和边框之间的边距. 不同于于 indent, 但是是上下左右四个⽅向都同时有效. ⽽ indent 最多只是两个⽅向有效(具体哪两个⽅向有效取决于 alignment ) openExternalLinks 是否允许打开⼀个外部的链接. (当 QLabel ⽂本内容包含 url 的时候涉及到) buddy 给 QLabel 关联⼀个 伙伴 , 这样点击 QLabel 时就能激活对应的伙伴. 例如伙伴如果是⼀个 QCheckBox, 那么该 QCheckBox 就会被选中. 对于编写的文本QT支持textFormat多样式其中就右通过添加标签的方式类似HTML修改文本样式的富文本还有Markdown文本。 label-setText(b竹杖芒鞋轻胜马谁怕一蓑烟雨任平生/b);//b标签用来加粗 对于标签的图片我们可以调用方法setscaledcontents,可以根据组件的大小图片自动填充满组件。 在QT中除了信号机制还有一种机制称为事件例如在拖拽窗口修改窗口大小时就会触发事件ReSize此时我们一般去重写父类中的虚函数来对事件进行处理。 除了以上标签的属性还有对于标签中文本内容属性的设置 设置文本对齐方式 ui-label-setAlignment(Qt::AlignCenter | Qt:: AlignVCenter);//设置内容垂直且水平居中对齐 ui-label-setWordWrap(true);//设置自动换行ui-label-setIndent(50);//设置缩进50个像素ui-label-setMargin(20);//设置文本边距; setbuddy 设置伙伴将两个无关系的组件关联起来。Lable的快捷键的格式是在文本中使用一个键就可以表示该标签的快捷键例如将一个按钮与一个标签关联起来给标签设置快捷键点击快捷键Alt快捷键触发按钮选中。标签的快捷键相对于按钮快捷键要弱很多。 LCD Number QLCDNumer 是⼀个专⻔⽤来显⽰数字的控件.  intValueQLCDNumber 显⽰的数字值(int).valueQLCDNumber 显⽰的数字值(double).和 intValue 是联动的. 例如给 value 设为 1.5, intValue 的值就是 2. 另外, 设置 value 和 intValue 的⽅法名字为 display , ⽽不是 setValue 或 者 setIntValue . digitCount显⽰⼏位数字.mode 数字显⽰形式. 1. QLCDNumber::Dec ⼗进制模式显⽰常规的⼗进制数字。 2. QLCDNumber::Hex ⼗六进制模式以⼗六进制格式显⽰数字。 3. QLCDNumber::Bin ⼆进制模式以⼆进制格式显⽰数字。 4. QLCDNumber::Oct ⼋进制模式以⼋进制格式显⽰数字。 只有⼗进制的时候才能显⽰⼩数点后的内容. segmentStyle设置显⽰⻛格. 1. QLCDNumber::Flat 平⾯的显⽰⻛格数字呈现在⼀个平坦的表⾯上。 2. QLCDNumber::Outline 轮廓显⽰⻛格数字具有清晰的轮廓和阴影效 果。 3. QLCDNumber::Filled 填充显⽰⻛格数字被填充颜⾊并与背景区分 开。 smallDecimalPoint设置⽐较⼩的 ⼩数点. 其中QT中也提供了计时器对象方便我们结合这个一起使用。 如果想使用线程的方式使用循环的方式去计时递减由于主窗口时有主线程维护的而QT为了保证主窗口的线程安全因此是不允许其他线程修改界面的。因此只能在主线程里改 //设置LCDNumber ui-lcdNumber-display(10);//设置初始值 timenew QTimer(this);//创建timea对象 connect(time,QTimer::timeout,this,Widget::handle); time-start(1000);//参数出发定时器为周期单位ms connect(this,Widget::pushButton_music_clicked,this,Widget::on_pushButton_music_clicked); void Widget::handle() {int numui-lcdNumber-intValue();if(num0){this-time-stop();emit pushButton_music_clicked();return ;}ui-lcdNumber-display(num-1); } QProgessBar 使⽤ QProgressBar 表⽰⼀个进度条. minimum进度条最⼩值maximum进度条最⼤值value进度条当前值alignment alignment ⽂本在进度条中的对⻬⽅式. • Qt::AlignLeft : 左对⻬ • Qt::AlignRight : 右对⻬ • Qt::AlignCenter : 居中对⻬ • Qt::AlignJustify : 两端对⻬ Qt::AlignJustify两端对⻬textVisible进度条的数字是否可⻅.orientation进度条的⽅向是⽔平还是垂直textDirection⽂本的朝向.format 展⽰的数字格式. • %p 表⽰进度的百分⽐0-100 • %v 表⽰进度的数值0-100 • %m 表⽰剩余时间以毫秒为单位 • %t 表⽰总时间以毫秒为单位 进度条的使用我们一般都会联合QTimer一起使用。基于QTimer的属性对进度条进行更新。 timenew QTimer(this);//创建timea对象 connect(time,QTimer::timeout,this,Widget::handle); time-start(1000);//参数出发定时器为周期单位ms void Widget::handle() {int val ui-progressBar-value();if(val100){this-time-stop();return ;}ui-progressBar-setValue(val10); } QProgressBar::chunk {background-color:red;}//修改样式表设置为红色进度条 Calender Widget QCalendarWidget 表⽰⼀个 ⽇历 , selectDate当前选中的⽇期minimumDate最⼩⽇期maximumDate最⼤⽇期firstDayOfWeek每周的第⼀天(也就是⽇历的第⼀列) 是周⼏.gridVisible是否显⽰表格的边框selectionMode是否允许选择⽇期navigationBarVisible⽇历上⽅标题是否显⽰ horizontalHeaderFormat⽇历上⽅标题显⽰的⽇期格式 verticalHeaderFormat ⽇历第⼀列显⽰的内容格式dateEditEnabled是否允许⽇期被编辑 void Widget::on_calendarWidget_selectionChanged() {QDate dateui-calendarWidget-selectedDate();ui-label_date-setText(date.toString()); } Line Edit Line Edit就是一个文本框用户可以去输入。 text输⼊框中的⽂本inputMask输⼊内容格式约束maxLength最⼤⻓度frame是否添加边框echoMode 显⽰⽅式. • QLineEdit::Normal 这是默认值⽂本框会显⽰输⼊的⽂本。 • QLineEdit::Password 在这种模式下输⼊的字符会被隐藏 通常⽤星号*或等号代替。 • QLineEdit::NoEcho 在这种模式下⽂本框不会显⽰任何输⼊ 的字符。 cursorPosition光标所在位置alignment⽂字对⻬⽅式, 设置⽔平和垂直⽅向的对⻬.dragEnabled是否允许拖拽readOnly是否是只读的(不允许修改)placeHolderText当输⼊框内容为空的时候, 显⽰什么样的提⽰信息clearButtonEnabled是否会⾃动显⽰出 清除按钮 ui-lineEdit_name-setPlaceholderText(请输入名字);ui-lineEdit_password-setPlaceholderText(请输入密码);ui-lineEdit_password-setEchoMode(QLineEdit::Password);ui-lineEdit_name-setClearButtonEnabled(true);ui-lineEdit_password-setClearButtonEnabled(true);ui-lineEdit_password-setInputMask(000-000-000);//固定格式为000-000-0000代表舒数字 说到这里的内容格式约束不得不说到一个语法正则表达式 关于正则表达式 正则表达式是⼀种在计算机中常⽤的, 使⽤特殊字符描述⼀个字符串的特征的机制. 在进⾏字 符串匹配时⾮常有⽤. 正则表达式的语法还⽐较复杂, ⼀般都是随⽤随查, 不需要背下来. 参考: 正则表达式⽂档 https://learn.microsoft.com/zh-cn/previous versions/visualstudio/visual-studio-2008/ae5bf541(vvs.90)?redirectedfromMSDN 正则表达式在线⼯具: https://regextester.buyaocha.com/ //在构造函数中创建正则表达式验证器 QRegularExpression reg(^1\\d{10}$);//例如创建一个验证电话号码的。 //^1表示以1开头之后\d表示数字需要多加/防止转义字符{10}表示前面的内容出现十次$结尾 ui-lineEdit_password-setValidator(new QRegularExpressionValidator(reg)); //通过该对象去检测密码输入的合法性void Widget::on_lineEdit_password_textEdited(const QString arg1)//输入内容就会产生信号 {QString contentarg1;int pos0;//验证是否通过的操作if (ui-lineEdit_password-validator()-validate(content,pos)QValidator::Acceptable){//如果通过按钮才可用ui-pushButton-setEnabled(false);}else{ui-pushButton-setEnabled(true);} }void Widget::on_checkBox_show_toggled(bool checked) {if(checkedtrue){ui-lineEdit_password-setEchoMode(QLineEdit::Normal);}else{ui-lineEdit_password-setEchoMode(QLineEdit::Password);} } QTextEdit QTextEdit 表⽰多⾏输⼊框. 也是⼀个富⽂本 markdown 编辑器. 并且能在内容超出编辑框范围时⾃动提供滚动。除了表示文本还可以使用html和markdown进行渲染。 markdown 输⼊框内持有的内容. ⽀持 markdown 格式. 能够⾃动的对markdown ⽂本进⾏ 渲染成 html html输⼊框内持有的内容. 可以⽀持⼤部分 html 标签. 包括 img 和 table 等placeHolderText输⼊框为空时提⽰的内容.readOnly是否是只读的是否是只读的是否开启 undo / redo 功能.按下 ctrl z 触发 undo autoFormating开启⾃动格式化. tabstopWidth 按下缩进占多少空间overwriteMode是否开启覆盖写模式acceptRichText是否接收富⽂本内容verticalScrollBarPolicy   垂直⽅向滚动条的出现策略 • Qt::ScrollBarAsNeeded : 根据内容⾃动决定是否需要滚动条。这是默认 值。 • Qt::ScrollBarAlwaysOff : 总是关闭滚动条。 • Qt::ScrollBarAlwaysOn : 总是显⽰滚动条。 horizontalScrollBarPolicy ⽔平⽅向滚动条的出现策略 • Qt::ScrollBarAsNeeded : 根据内容⾃动决定是否需要滚动条。这是默认值。 • Qt::ScrollBarAlwaysOff : 总是关闭滚动条。 • Qt::ScrollBarAlwaysOn : 总是显⽰滚动条 信号 textChanged()⽂本内容改变时触发selectionChanged()选中范围改变时触发cursorPositionChanged()光标移动时触发undoAvailable(bool)可以进⾏ undo 操作时触发可以进⾏ redo 操作时触发可以进⾏ redo 操作时触发copyAvaiable(bool)⽂本被选中/取消选中时触发 QCombo Box QCombo Box叫做复选框其实就是下拉框。 currentText当前选中的⽂本currentIndex当前选中的条⽬下标从 0 开始计算. 如果当前没有条⽬被选中, 值为 -1 editable 是否允许修改设为 true 时, QComboBox 的⾏为就⾮常接近 QLineEdit , 也可以设置 validatoriconSize下拉框图标 (⼩三⻆) 的⼤⼩maxCount最多允许有多少个条⽬addItem(const QString)添加⼀个条⽬currentIndex()获取当前条⽬的下标从 0 开始计算. 如果当前没有条⽬被选中, 值为 -1currentText()获取当前条⽬的⽂本内容 信号 activated(int) activated(const QString text) 当⽤⼾选择了⼀个选项时发出.这个时候相当于⽤⼾点开下拉框, 并且⿏标划过某个选项此时还没有确认做出选择.. currentIndexChanged(int) currentIndexChanged(const QString text) 当前选项改变时发出. 此时⽤⼾已经明确的选择了⼀个选项. ⽤⼾操作或者通过程序操作都会触发这个信号. editTextChanged(const QString text) 当编辑框中的⽂本改变时发出 (editable 为 true 时有效) //构造 std::ifstream fp(D:\\QTcode\\edittext\\test.txt,std::ifstream::out);if(!fp.is_open()){qDebug()文件打开失败;return ;}std::string line;while(std::getline(fp,line)){ui-comboBox-addItem(QString::fromStdString(line));}fp.close();void Widget::on_comboBox_currentIndexChanged(int index)//选中的下拉框的内容显示给标签 {QString contentui-comboBox-currentText();ui-label_2-setText(content); }QSpin Box 使⽤ QSpinBox 或者 QDoubleSpinBox 表⽰ 微调框, 它是带有按钮的输⼊框. 可以⽤来输⼊整 数/浮点数. 通过点击按钮来修改数值⼤⼩. 由于 SpinBox 和 QDoubleSpinBox ⽤法基本相同, 就只介绍 SpinBox 的使⽤了. value存储的数值.singleStep每次调整的 步⻓. 按下⼀次按钮数据变化多少displayInteger 数字的进制. 例如 displayInteger 设为 10, 则是按照 10 进制表⽰. 设为 2 则为 2 进制表⽰. minimum最⼩值maximum最⼤值suffix后缀prefix前缀wrapping是否允许换⾏frame是否带边框alignment⽂字对⻬⽅式. . readOnly 是否允许修改buttonSymbol按钮上的图标buttonsymbol 按钮上的图标. UpDownArrows 上下箭头形式 • PlusMinus 加减号形式 • NoButtons 没有按钮 accelerated (加速的) 按下按钮时是否为快速调整模式 correctionMode 输⼊有误时如何修正. • QAbstractSpinBox::CorrectToPreviousValue : 如果⽤⼾输⼊了⼀个 ⽆效的值例如在只能显⽰正整数的SpinBox中输⼊了负数那么 SpinBox会恢复为上⼀个有效值。例如如果SpinBox的初始值是1⽤⼾ 输⼊了-1⽆效然后SpinBox会恢复为1。 • QAbstractSpinBox::CorrectToNearestValue : 如果⽤⼾输⼊了⼀个 ⽆效的值SpinBox会恢复为最接近的有效值。例如如果SpinBox的初始 值是1⽤⼾输⼊了-1⽆效那么SpinBox会恢复为0。 keyboardTrack 是否开启键盘跟踪. 设为 true, 每次在输⼊框输⼊⼀个数字, 都会触发⼀次 valueChanged() 和 textChanged() 信号. 设为 false, 只有在最终按下 enter 或者输⼊框失去焦点, 才会触发 valueChanged() 和 textChanged() 信号 信号 textChanged(QString) 微调框的⽂本发⽣改变时会触发. 参数 QString 带有 前缀 和 后缀. valueChanged(int) 微调框的⽂本发⽣改变时会触发. 参数 int, 表⽰当前的数值 //设置微调框ui-spinBox-setRange(1,5);//设置范围ui-spinBox-setValue(1);//设置初始值int valuui-spinBox-value();//获取微调框当前值 QDateTimeEdit QDateTimeEdit其实也是微调框但是是操作时间的对于时间的为条框有三个如下所示 使⽤ QDateEdit 作为⽇期的微调框. 使⽤ QTimeEdit 作为时间的微调框. 使⽤ QDateTimeEdit 作为时间⽇期的微调框. QDateTimeEdit 核⼼属性 dateTime时间⽇期的值. 形如 2000/1/1 0:00:00date单纯⽇期的值. 形如 2001/1/1time单纯时间的值. 形如 0:00:00displayFormat 时间⽇期格式. 形如 yyyy/M/d H:mm • y 表⽰年份 • M 表⽰⽉份 • d 表⽰⽇期 • H 表⽰⼩时 • m 表⽰分钟 • s 表⽰秒 minimumDateTime最⼩时间⽇期maximumDateTime最⼤时间⽇期timeSpec • Qt::LocalTime 显⽰本地时间。 • Qt::UTC 显⽰协调世界时UTC。 • Qt::OffsetFromUTC 显⽰相对于UTC的偏移量(时差). 信号 dateChanged(QDate)⽇期改变时触发.timeChanged(QTime)时间改变时触发. dateTimeChanged(QDateTime) 时间⽇期任意⼀个改变时触发. 对于日期对象我们可以调用QDateTime中自身内置的函数 使⽤ daysTo 函数可以计算两个⽇期的天数. • 使⽤ secsTo 函数可以计算两个时间的秒数. • 通过 (秒数 / 3600) 换算成⼩时数, 再余上 24 得到零⼏个⼩时. • 使⽤ QString::number 把整数转成 QString 进⾏拼接 QDateTime timeui-dateEdit-dateTime();QDateTime time2ui-dateEdit_2-dateTime();int daytime.daysTo(time2);//time与time2两者做差求出天数差int secondstime.secsTo(time2);//求相差的秒数qDebug()day;qDebug()seconds; QDial 使⽤ QDial 表⽰⼀个 旋钮. 有些程序, 通过⿏标拖动旋钮旋转, 即可完成⼀些相关的设置 value持有的数值.minimum最⼩值maximum最⼤值singleStep按下⽅向键的时候改变的步⻓.pageStep按下 pageUp / pageDown 的时候改变的步⻓.sliderPosition界⾯上旋钮显⽰的 初始位置tracking 外观是否会跟踪数值变化. 默认值为 true. ⼀般不需要修改. wrapping 是否允许循环调整. 即数值如果超过最⼤值, 是否允许回到最⼩值. (调整过程能否 套圈) notchesVisible是否显⽰ 刻度线notchTarget 刻度线之间的相对位置. 数字越⼤, 刻度线越稀疏. 信号 valueChanged(int)数值改变时触发rangeChanged(int, int)范围变化时触发 可以通过代码也可以在ui中技能设置设置wrapping可以循回设置nothtarget设置为10,设置初始旋钮的位置数值设置旋钮整圈的范围最大值与最小值。编写一个代码通过旋钮调节窗口透明度。 void Widget::on_dial_valueChanged(int value) {int valui-dial-value();double opacity(double(val)/100);this-setWindowOpacity(opacity); } QverticalSlider 使⽤ verticalSlider 表⽰⼀个滑动条. verticalSlider 和 QDial 都是继承⾃ QAbstractSlider , 因此⽤法上基本相同. value持有的数值.minimum最⼩值maximum最⼤值 singleStep按下⽅向键的时候改变的步⻓.pageStep按下 pageUp / pageDown 的时候改变的步⻓.sliderPosition滑动条显⽰的 初始位置tracking 外观是否会跟踪数值变化. 默认值为 true. ⼀般不需要修改. orientation滑动条的⽅向是⽔平还是垂直 invertedAppearance 是否要翻转滑动条的⽅向tickPosition刻度的位置.tickInterval刻度的密集程度 valueChanged(int) 数值改变时触发rangeChanged(int, int)范围变化时触发 除了和旋转按钮一样的功能我们还可以给他设置快捷键 //给滑动条添加快捷键QShortcut *shortcutnew QShortcut(this);//先创建快捷键对象shortcut-setKey(QKeySequence(w));QShortcut *shortcut2new QShortcut(this);//先创建快捷键对象shortcut2-setKey(QKeySequence(a));//使用信号槽来触发connect(shortcut,QShortcut::activated,this,Widget::Sliderhandle);connect(shortcut2,QShortcut::activated,this,Widget::Sliderhandle2);void Widget::Sliderhandle() {int valui-verticalSlider-value();if(valui-verticalSlider-maximum()){return ;}ui-verticalSlider-setValue(val1);//每次加一 } void Widget::Sliderhandle2() {int valui-verticalSlider-value();if(valui-verticalSlider-minimum()){return ;}ui-verticalSlider-setValue(val-1);//每次减一 } 4.多元素控件 Qt 中提供的多元素控件有: • QListWidget • QListView 前两个表示列表的组合控件 • QTableWidget • QTableView 中间两个是表示表格的组合控件 • QTreeWidget • QTreeView 最后两个是表示树形的组合控件 至于没什么每一组都两个实际上在软件开发中 xxxView是一种MVC结构指一种常用的组织形式。View只负责视图不关注数据以及交互使用view就需要自己实现交互以及数据部分为了方便编写又提供了xxxWidget,基于xxxView帮我们提供了API方便我们去用。 这里我们就介绍WIdget类型的。 QListWidget 使⽤ QListWidget 能够显⽰⼀个纵向的列表.  currentRow当前被选中的是第⼏⾏count⼀共有多少⾏sortingEnabled是否允许排序isWrapping是否允许换⾏emAlignment元素的对⻬⽅式selectRectVisible被选中的元素矩形是否可⻅spacing元素之间的间隔 主要方法 addItem(const QString label) addItem(QListWidgetItem *item) 列表中添加元素 currentItem()返回 QListWidgetItem* 表⽰当前选中的元素setCurrentItem(QListWidgetItem* item)设置选中哪个元素setCurrentRow(int row)设置选中第⼏⾏的元素 insertItem(const QString label, int row) insertItem(QListWidgetItem *item, int row) 在指定的位置插⼊元素 item(int row) 返回 QListWidgetItem* 表⽰第 row ⾏的元素takeItem(int row) 删除指定⾏的元素, 返回 QListWidgetItem* 表⽰是哪个 元素被删 除了 槽函数 currentItemChanged(QListWidgetItem* current, QListWidgetItem* old) 选中不同元素时会触发. 参数是当前选中的元素和之前选中的元素.currentRowChanged(int)选中不同元素时会触发. 参数是当前选中元素的⾏数.itemClicked(QListWidgetItem* item)点击某个元素时触发 itemDoubleClicked(QListWidgetItem* item) 双击某个元素时触发itemEntered(QListWidgetItem* item)⿏标进⼊元素时触发 void Widget::on_pushButton_add_clicked() {//根据文本插入QString contentui-lineEdit-text();QListWidgetItem *item new QListWidgetItem(ui-listWidget);item-setText(content);ui-listWidget-setStyleSheet(font-size:15px;color:green;);ui-listWidget-addItem(item);//也可以之家additemQString }void Widget::on_pushButton_del_clicked() {//根据选中的行删除int rowui-listWidget-currentRow();ui-listWidget-takeItem(row); }QTabelWidget 使⽤ QTableWidget 表⽰⼀个表格控件. ⼀个表格中包含若⼲⾏, 每⼀⾏⼜包含若⼲列. 表格中的每个单元格, 是⼀个 QTableWidgetItem 对象 item(int row, int column) 根据⾏数列数获取指定的 QTableWidgetItem* setItem(int row, int column, QTableWidget*) 根据⾏数列数设置表格中的元素currentItem()返回被选中的元素 QTableWidgetItem*currentRow()返回被选中元素是第⼏⾏currentColumn()返回被选中元素是第⼏列row(QTableWidgetItem* 获取指定 item 是第⼏⾏column(QTableWidgetItem* ) 获取指定 item 是第⼏列rowCount()获取⾏数columnCount()获取列数insertRow(int row)在第 row ⾏处插⼊新⾏insertColumn(int column)在第 column 列插⼊新列removeRow(int row)删除第 row ⾏removeColumn(int column)删除第 column 列 setHorizontalHeaderItem(int column, QTableWidget*) 设置指定列的表头 setVerticalHeaderItem(int row, QTableWidget*) 设置指定⾏的表头 信号 cellClicked(int row, int column)点击单元格时触发 cellDoubleClicked(int row, int column) 双击单元格时触发cellEntered(int row, int column)⿏标进⼊单元格时触发 currentCellChanged(int row, int column, int previousRow, int previousColumn) 选中不同单元格时触发 QTableWidgetItem 核⼼⽅法 row()获取当前是第⼏⾏column()获取当前是第⼏列setText(const QString)设置⽂本setTextAlignment(int)设置⽂本对⻬setIcon(const QIcon)设置图标setSelected(bool)设置被选中setSizeHints(const QSize)设置尺⼨setFont(const QFont)设置字体 表格的属性就像我们在mysql学习到的表格有列的属性行的属性。第几行第几行就是一个item. /创建三行三列的表格ui-tableWidget-insertRow(0);ui-tableWidget-insertRow(1);ui-tableWidget-insertRow(2);ui-tableWidget-insertColumn(0);ui-tableWidget-insertColumn(1);ui-tableWidget-insertColumn(2);//设置列名ui-tableWidget-setHorizontalHeaderItem(0,new QTableWidgetItem(姓名));ui-tableWidget-setHorizontalHeaderItem(1,new QTableWidgetItem(性别));ui-tableWidget-setHorizontalHeaderItem(2,new QTableWidgetItem(年龄));//添加元素ui-tableWidget-setItem(0,0,new QTableWidgetItem(张三));ui-tableWidget-setItem(0,1,new QTableWidgetItem(男));ui-tableWidget-setItem(0,2,new QTableWidgetItem(00001));void Widget::on_pushButton_insert_clicked() {int rowui-tableWidget-rowCount();//下标即为对应的行//获取当前的行数就可以表示下一行ui-tableWidget-insertRow(row);}void Widget::on_pushButton_clicked() {int columnui-tableWidget-columnCount();//下标即为对应的行//获取当前的行数就可以表示下一行ui-tableWidget-insertColumn(column);QString contentui-lineEdit_table-text();ui-tableWidget-setHorizontalHeaderItem(column,new QTableWidgetItem(content)); } QTree Widget 使⽤ QTreeWidget 表⽰⼀个树形控件. ⾥⾯的每个元素, 都是⼀个 QTreeWidgetItem , 每个 QTreeWidgetItem 可以包含多个⽂本和图标, 每个⽂本/图标为⼀个 列. 可以给 QTreeWidget 设置顶层节点(顶层节点可以有多个), 然后再给顶层节点添加⼦节点, 从⽽构成 树形结构。 clear清空所有⼦节点addTopLevelItem(QTreeWidgetItem* item)新增顶层节点topLevelItem(int index)获取指定下标的顶层节点.opLevelItemCount()获取顶层节点个数 indexOfTopLevelItem(QTreeWidgetItem* item) 查询指定节点是顶层节点中的下标takeTopLevelItem(int index) 删除指定的顶层节点. 返回 QTreeWidgetItem* 表⽰被删除 的元素 currentItem()获取到当前选中的节点, 返回 QTreeWidgetItemsetCurrentItem(QTreeWidgetItem* item)选中指定节点setExpanded(bool)展开/关闭节点setHeaderLabel(const QString text) 设置 TreeWidget 的 header 名称.   QTreeWidget 核⼼信号 currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* old) 切换选中元素时触发itemClicked(QTreeWidgetItem* item, int col)点击元素时触发 itemDoubleClicked(QTreeWidgetItem* item, int col) 双击元素时触发itemEntered(QTreeWidgetItem* item, int col)元素被展开时触发 itemExpanded(QTreeWidgetItem* item) 元素被展开时触发itemCollapsend(QTreeWidgetItem* item)元素被折叠时触发 QTreeWidgetItem 核⼼属性 addChild(QTreeWidgetItem* child)新增⼦节点childCount()⼦节点的个数child(int index)获取指定下标的⼦节点. 返回 QTreeWidgetItemtakeChild(int index)删除对应下标的⼦节点 removeChild(QTreeWidgetItem* child) 删除对应的⼦节点parent()获取该元素的⽗节点 当目录使用 //设置树形结构QStringList headerLabels;headerLabels Name Age Location;ui-treeWidget-setHeaderLabels(headerLabels);//设置根节点的列名//新增顶层节点顶层目录即最高层次的目录QTreeWidgetItem *itemnew QTreeWidgetItem();item-setText(0,目录);//0表示所处的目录列号//给顶层目录添加子目录QTreeWidgetItem *itemchildnew QTreeWidgetItem();itemchild-setText(0,子目录);QTreeWidgetItem *itemchild2new QTreeWidgetItem();itemchild2-setText(0,子目录2);item-addChild(itemchild);item-addChild(itemchild2);ui-treeWidget-addTopLevelItem(item);//添加到树中QTreeWidgetItem *item1new QTreeWidgetItem();item1-setText(0,目录1);//添加到树中ui-treeWidget-addTopLevelItem(item1);QTreeWidgetItem *item2new QTreeWidgetItem();item2-setText(0,目录2);//添加到树中ui-treeWidget-addTopLevelItem(item2); 即一个列下可能会有许多子目录。 5.容器类控件 容器类控件有两种 Group Box 分组框QTab WIdget标签页 Group Box 我们可以将一些组件放到这个框框里头同时左上角还可以设置这整个框的名字。 title分组框的标题alignment分组框内部内容的对⻬⽅式flat是否是 扁平 模式checkable 是否可选择. 设为 true, 则在 title 前⽅会多出⼀个可勾选的部分. checked描述分组框的选择状态 (前提是 checkable 为 true) QTab Widget 使⽤ QTabWidget 实现⼀个带有标签⻚的控件, 可以往⾥⾯添加⼀些 widget. 进⼀步的就可以通过标 签⻚来切换. tabPosition 标签⻚所在的位置. • North 上⽅ • South 下⽅ • West 左侧 • East 右侧 currentIndex当前选中了第⼏个标签⻚ (从 0 开始计算)currentTabText当前选中的标签⻚的⽂本currentTabName当前选中的标签⻚的名字currentTabIcon当前选中的标签⻚的图标currentTabToolTip当前选中的标签⻚的提⽰信息absCloseab标签⻚是否可以关闭movable标签⻚是否可以移动 currentChanged(int)在标签⻚发⽣切换时触发, 参数为被点击的选项卡编号.tabBarClicked(int)在点击选项卡的标签条的时候触发. 参数为被点击的选项卡编号.tabBarDoubleClicked(int)在双击选项卡的标签条的时候触发. 参数为被点击的选项卡编号.tabCloseRequest(int)在标签⻚关闭时触发. 参数为被关闭的选项卡编号 我们首先可以去ui界面设计拖动一个标签table我们可以选择一个页面往里面添加其他组件同时i我们也可以右键添加或删除页同时还有许多共功能。 使用ui访问具体的某个标签页时我们不是用objectname而失去使用currentTabName //创建新的标签页 void Widget::on_pushButton_add_clicked() {QWidget * widnew QWidget();int numui-tabWidget-count();//标签页数量ui-tabWidget-addTab(wid,QString(标签页)QString::number(num1));//三个参数第一个为widget指针表示窗口第二个为icon表示图标,第三个为 QString表示标题} //删除选中标签页 void Widget::on_pushButton_del_clicked() {int idnextui-tabWidget-currentIndex();ui-tabWidget-removeTab(idnext); } 布局管理器 之前使⽤ Qt 在界⾯上创建的控件, 都是通过 手动定位 的⽅式来设定的. 也就是每个控件所在的位置, 都需要计算坐标, 最终通过 setGeometry 或者 move ⽅式摆放过去. 这种设定⽅式其实并不⽅便. 尤其是界⾯如果内容⽐较多, 不好计算. ⽽且⼀个窗⼝⼤⼩往往是可以调整 的, 按照绝对定位的⽅式, 也⽆法⾃适应窗⼝⼤⼩. 因此 Qt 引⼊ 布局管理器 (Layout) 机制, 来解决上述问题。 垂直布局QVBoxLayout 使⽤ QVBoxLayout 表⽰垂直的布局管理器. V 是 vertical 的缩写. 五个核心属性 layoutLeftMargin左侧边距layoutRightMargin右侧边距layoutTopMargin上⽅边距layoutBottomMargin下⽅边距layoutSpacing 相邻元素之间的间距 Layout 只是⽤于界⾯布局, 并没有提供信号. 一个窗口只能设置一个布局管理器。但是我们用QT Desgner可以拖很多个layout实际上时先创建了一个widget在对widget设置垂直布局。其次虽然只能设谁一个布局管理但是里面可以进行布局管理器的嵌套。、 QPushButton * button1new QPushButton(按钮一);QPushButton * button2new QPushButton(按钮二);QPushButton * button3new QPushButton(按钮三);//创建布局管理器QVBoxLayout * layoutnew QVBoxLayout();layout-addWidget(button1);layout-addWidget(button2);layout-addWidget(button3);//添加布局管理器到窗口中this-setLayout(layout); 我们试着嵌套布局管理器看看 QVBoxLayout * layoutnew QVBoxLayout();this-setLayout(layout);QPushButton * button1new QPushButton(按钮一);QPushButton * button2new QPushButton(按钮二);layout-addWidget(button1);layout-addWidget(button2);QHBoxLayout * hboxlayoutnew QHBoxLayout();//把水平布局添加到垂直布局当中layout-addLayout(hboxlayout);QPushButton * button3new QPushButton(按钮三);QPushButton * button4new QPushButton(按钮四);hboxlayout-addWidget(button3);hboxlayout-addWidget(button4); ⽔平布局QHBoxLayout 使⽤ QHBoxLayout 表⽰垂直的布局管理器. H 是 horizontal 的缩写. 属性与垂直布局一样用法也一样区别时水平布局注重水平方向的的布置管理。上述例子也演示了水平布局。 网格布局QGridLayout Qt 中还提供了 QGridLayout ⽤来实现⽹格布局的效果,可以达到 M * N 的这种⽹格的效果 网格布局会根据坐标自动进行划分。 layoutLeftMargin左侧边距layoutRightMargin右侧边距layoutTopMargin上⽅边距layoutBottomMargin下⽅边距layoutHorizontalSpacing相邻元素之间⽔平⽅向的间距layoutVerticalSpacing相邻元素之间垂直⽅向的间距layoutRowStretch⾏⽅向的拉伸系数layoutColumnStretch列⽅向的拉伸系数 想不与上面的布局网格布局队列和行的间距以及拉伸系数提供了修改。 QGridLayout *gridlayoutnew QGridLayout();this-setLayout(gridlayout);QPushButton * button1new QPushButton(按钮一);QPushButton * button2new QPushButton(按钮二);QPushButton * button3new QPushButton(按钮三);QPushButton * button4new QPushButton(按钮四);gridlayout-addWidget(button1,0,0);//添加时可以指定行与列gridlayout-addWidget(button2,0,1);gridlayout-addWidget(button3,1,0);gridlayout-addWidget(button4,1,1); } 通过将坐标设置为同一行或者同一列就可以实现水平或者垂直布局。 即使两者坐标相差极大但是也会根据窗口大小在窗口内按照布局显示。 gridlayout-addWidget(button1,0,0);//添加时可以指定行与列gridlayout-addWidget(button2,1,1);gridlayout-addWidget(button3,50,50);gridlayout-addWidget(button4,100,100); 直接进行组建的布局各个组件的大小是均等的如果你想改变某个组件或者某列或者某行的大小你就可以修改他的拉伸系数。 gridlayout-setColumnStretch(0,1);//设置第一列的拉伸系数为一gridlayout-setColumnStretch(1,2);//设置第2列的拉伸系数为二出列列拉伸我们还可以进行行拉伸但是直接拉伸我们会发现并不会有我们想看到的效果这是因为widget中有一个sizepolicy的限制。 使⽤ setSizePolicy 设置按钮的尺⼨策略. 可选的值如下: • QSizePolicy::Ignored : 忽略控件的尺⼨不对布局产⽣影响。 • QSizePolicy::Minimum : 控件的最⼩尺⼨为固定值布局时不会超过该值。 • QSizePolicy::Maximum : 控件的最⼤尺⼨为固定值布局时不会⼩于该值。 • QSizePolicy::Preferred : 控件的理想尺⼨为固定值布局时会尽量接近该值。 • QSizePolicy::Expanding : 控件的尺⼨可以根据空间调整尽可能占据更多空间。 • QSizePolicy::Shrinking : 控件的尺⼨可以根据空间调整尽可能缩⼩以适应空间 QGridLayout *gridlayoutnew QGridLayout();this-setLayout(gridlayout);QPushButton * button1new QPushButton(按钮一);QPushButton * button2new QPushButton(按钮二);QPushButton * button3new QPushButton(按钮三);QPushButton * button4new QPushButton(按钮四);QPushButton * button5new QPushButton(按钮五);QPushButton * button6new QPushButton(按钮六);button1-setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Ignored);button2-setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Ignored);button3-setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Ignored);button4-setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Ignored);button5-setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Ignored);button6-setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Ignored);gridlayout-addWidget(button1,0,0);//添加时可以指定行与列gridlayout-addWidget(button2,0,1);gridlayout-addWidget(button3,1,0);gridlayout-addWidget(button4,1,1);gridlayout-addWidget(button5,2,0);gridlayout-addWidget(button6,2,1);gridlayout-setRowStretch(0,1);gridlayout-setRowStretch(1,3); 表单布局 除了上述的布局管理器之外, Qt 还提供了 QFormLayout , 属于是 QGridLayout 的特殊情况, 专 ⻔⽤于实现两列表单的布局. 这种表单布局多⽤于让⽤⼾填写信息的场景. 左侧列为提⽰, 右侧列为输⼊框。 在该布局添加item时使用方法addRow(),参数分别为左侧的部件与右侧的部件因为他是两列的结构也可以写空指针表示这个位置不放部件。 // 把上述元素添加到 layout 中layout-addRow(label1, lineEdit1);layout-addRow(label2, lineEdit2);layout-addRow(label3, lineEdit3);layout-addRow(NULL, btn); Spacer 使⽤布局管理器的时候, 可能需要在控件之间, 添加⼀段空⽩. 就可以使⽤ QSpacerItem 来表⽰ width宽度height⾼度hData ⽔平⽅向的 sizePolicy • QSizePolicy::Ignored : 忽略控件的尺⼨不对布局产⽣影响。 • QSizePolicy::Minimum : 控件的最⼩尺⼨为固定值布局时不会超过该值。 • QSizePolicy::Maximum : 控件的最⼤尺⼨为固定值布局时不会⼩于该值。 • QSizePolicy::Preferred : 控件的理想尺⼨为固定值布局时会尽量接近该值    QSizePolicy::Expanding : 控件的尺⼨可以根据空间调整尽可能占据更多空 间。 • QSizePolicy::Shrinking : 控件的尺⼨可以根据空间调整尽可能缩⼩以适应 空间。 vData垂直⽅向的 sizePolicy 我们可以将空白也想象成一个组件表示空白进行两个组件空白的设置时按顺序依次添加到布局管理中 QSpacerItem主要用于在Qt中的水平布局和垂直布局中添加空白空间。它可以通过布局管理器的方法如addSpacing()、insertSpacing()、addStretch()和insertStretch()直接添加到布局中。在网格布局中虽然不直接使用QSpacerItem但可以通过调整行和列的“弹性”来间接实现类似的效果。在更复杂的布局场景中QSpacerItem仍然是一个有用的工具可以帮助控制部件之间的间距和布局的整体外观。 QPushButton* btn1 new QPushButton(按钮1);QPushButton* btn2 new QPushButton(按钮2);// 创建 SpacerQSpacerItem* spacer new QSpacerItem(200, 20);layout-addWidget(btn1);// 在两个 widget 中间添加空⽩layout-addSpacerItem(spacer);layout-addWidget(btn2);
http://www.tj-hxxt.cn/news/134512.html

相关文章:

  • 社保局网站建设意义网站在别人那里已经建好了_公司里要进行修改_怎么做
  • 网站开发需要学什么技能wordpress修改登录地址
  • 做版权保护的网站seo查询seo
  • 中国企业网站西安手机网站建设动力无限
  • 长沙企业建站招聘信息网站搜索引擎收录
  • 公司要做网站网站建设代理网站
  • 资阳的网站建设奉城网站建设
  • 杭州拱墅区网站建设小浣熊做单网站
  • 建设网站用图片需要版权做可视化的网站
  • 徐州网站建设网络推广做电商没几个能赚钱的
  • 做网站语言最好网站图片特效代码
  • 创建网站超市国内vps做网站备案
  • 新网站建设的流程百度推广技巧
  • 织梦cms网站更新常州网签备案查询
  • 济南的网站建设公司哪家好响应式网站和自适应
  • 外贸移动商城网站建设中国企业500强入围标准
  • 龙岩网站推广公司wordpress获取文章id方法
  • 5网站建设公司flash网站建设教程视频
  • 天津建设集团网站深圳网站设计兴田德润放心
  • 做常州美食网站首页的背景图电子商城网站的设计与实现
  • 网站备案的规划方案wordpress菜单美化插件
  • 制作网站对话框孵化器网站建设方案
  • 甘肃省建设局网站首页华为荣耀手机官网
  • php做网站框架wordpress 媒体分类
  • 网站群站优化阿里云网站模板
  • 检察门户网站建设管理咨询公司税收优惠
  • 广东网站建设wordpress 小工具 插件
  • 网站空间怎么进推广策划案
  • 荣耀官方网站手机商城网站建设是指
  • 质监局网站建设总结淮安市交通建设局网站