当前位置:网站首页>Qt中常用的窗体

Qt中常用的窗体

2022-06-21 20:54:00 小丑的舞台

Qwidget

1.简介:

QWidget类是所有用户界面对象的基类。它从窗口系统接收鼠标,键盘和其他事件,并将其自身绘制在屏幕上。

同时继承:QObject 类 和 QPaintDevice

  • QWidget:类是所有用户界面对象的基类。

  • QObject:是所有Qt类的基类。提供了信号-槽的机制。

  • QPaintDevice:可以使用QPainter绘制的对象的基类。

2.构造函数

 QWidget::QWidget(
    QWidget *parent = Q_NULLPTR,
    Qt::WindowFlags f = Qt::WindowFlags()
 );

parent:如果是 nullptr,则小部件将成为一个主窗口,否则小部件将成为 parent内的子窗口删除其父窗口时,将删除他的小部件。

f:由任何窗口标志的按位“或”组成的值。Qt::Window Flags()就是构造了一个模板类对象默认是Qt::Widget

3.成员函数

移动函数:

void move(const QPoint &) void move(int x, int y)

//设置颜色(一般和颜色填充集合使用)

void setPalette(const QPalette &)

//颜色填充

void setAutoFillBackground(bool enabled)

//设置字体

void setFont(const QFont &);

//设置鼠标追踪事件

void setMouseTracking(bool enable);

 //小部件
 ​
     QWidget *widget=new QWidget(nullptr,Qt::Window);
     //设置窗口标题:
     widget->setWindowTitle(QStringLiteral("这是以QWidget窗体"));
     //widget->setToolTip(QStringLiteral("这是一个提示"));
     //设置窗口的图标
     widget->setWindowIcon(QIcon("F:\\qtItem\\oftenForms\\image\\11.jpg"));
     //设置窗口的状态:
     widget->setWindowState(Qt::WindowNoState);//正常状态
     //widget->setWindowState(Qt::WindowMinimized);//宿小状态
     //widget->setWindowState(Qt::WindowMaximized);//最大状态
     //widget->setWindowState(Qt::WindowFullScreen);//充满整个屏幕,连最大化和最小化的按扭都没有了;
     //widget->setWindowState(Qt::WindowActive);//活动窗口,不知道有什么用
     //设置窗口透明读
     widget->setWindowOpacity(0.7);
     //隐藏窗体:
    // widget->hide();
     //关闭窗体
     //widget->close();
     //设置窗口固定大小
     //widget->setFixedSize(400,400);
     //设置光标
     widget->setCursor(Qt::CrossCursor);
     //显示窗口
     widget->show();

4.属性:

  1. enabled 启用或禁用widget,默认启用。

  2. geometry widget的位置和尺寸

  3. 3.sizePolicy 设置widget在水平和垂直方向的伸缩策略以及伸缩因子,所谓伸缩策略实际就是widget对待sizeHint的策略,

  4. palette:调色板

    值属性意思
    Fixed认为sizeHint值为最佳,widget尺寸不能改变
    Minimum认为sizeHint值为最小,尺寸可以变大,不能变小
    Maximum认为sizeHint值为最大,尺寸可以变小,不能变大
    Preferred认为sizeHint为合适值,可以改变尺寸,但不推荐变大
    Expanding认为sizeHint为合适值,可以改变尺寸,比Preferred适合变大
    MinimumExpanding认为sizeHint为最小,尺寸可以变大,不能变小
    Ignored忽略sizeHint大小,可以改变尺寸

QFrame(带边框的窗体)

简介:

1.QFrame与QWidget的区别:

QFrame是基本控件的基类,QWidget是QFrame父类。

QFrame在QWidget的基础上提供了对窗体边框的控制。

功能作用:

主要控制一些边框样式,例如:凸起,凹下,阴影,线宽;

属性:

  1. frameRect : QRect : 绘制框架的矩形。默认情况下是整个小部件。当小部件改变大小时,框架矩形会自动调整。

  2. frameShadow : Shadow: 框架样式的框架阴影。

  3. frameShape : Shape : 框架样式的框架形状 。

  4. frameWidth : const int : 样式框架确定的宽度。例如,NoFrame 指定的样式的框架宽度始终为 0,而 Panel 指定的样式框架宽度等于 lineWidth

  5. lineWidth : int :框架的宽度。

    用作分隔符的框架(HLine 和 VLine)的 lineWidthframeWidth 指定。

  6. midLineWidth : int : 框架中间多出一条线的宽度,它使用第三种颜色来获得特殊的3D效果。仅为凸起(raised)或凹陷(sunken)的 Box、HLine、VLine 框架绘制中线。

类型:

1、enum QFrame::Shadow:此枚举类型定义用于为框架提供 3D 效果的阴影类型。

Plain:框架和内容与周围平齐。使用调色板 QPalette::WindowText 颜色绘制(没有任何 3D 效果) ​ Raised:框架和内容出现凸起; 使用当前颜色组的浅色和深色绘制 3D 凸起线 ​ Sunken:框架和内容出现凹陷; 使用当前颜色组的明暗颜色绘制 3D 凹陷线 2、enum QFrame::Shape:此枚举类型定义可用框架的形状。

NoFrame:什么都不绘制 ​ Box:在其内容周围绘制一个框 ​ Panel:绘制一个面板,使内容显得凸起或凹陷 ​ StyledPanel:绘制一个矩形面板,其外观取决于当前的 GUI 样式。 它可以凸起或凹陷 ​ HLine:绘制一条水平线,不加框(用作分隔符) ​ VLine:绘制一条垂直线,没有框(用作分隔符) ​ WinPanel:绘制一个矩形面板,它可以像 Windows 2000 中的面板一样凸起或凹陷。指定此形状将线宽设置为 2 像素。提供 WinPanel 是为了兼容性。对于 GUI 样式独立性,建议改用 StyledPanel

应用

     //第一步:创建一个QFrame对象
     QFrame frame;
     //frame.setStyleSheet()
     //设置边框宽度
     frame.setLineWidth(10);
     //设置中线
     frame.setMidLineWidth(5);
     //设置形状
     frame.setFrameShape(QFrame::Box);
     //设置窗口的背景色
     //frame.setStyleSheet("background-color:red");
     //设置阴影
     frame.setFrameShadow(QFrame::Raised);
     //设置边框位置 绘制框架的矩形大小;
     frame.setFrameRect(QRect(10,0,400,400));
     //获取边框的宽度
     qDebug()<< frame.lineWidth();
     frame.show();

QDialog(对话框)

简介:

继承于Qwidget,是一种容器类型的组件;

当QWidget无父组件的时候作为一个独立的窗口,有父组件的时候,将作为一个可见的部件嵌入到父组件里面。

QDialog不能作为子部件嵌入到其他容器中;

QGroupBox(组框)

QGroupBox为构建分组框提供了支持。 分组框通常带有一个边框和一个标题栏,作为容器部件来使用,在其中可以布置各种窗口部件。 布局时可用作一组控件的容器,但是需要注意的是,内部必须使用布局控件(如QBoxLayout)进行布 局。

属性:

  1. alignment: Qt::Alignment

    组框标题的对齐方式。默认为 Qt::AlignLeft。

    • Qt::AlignLeft:左侧对齐。

    • Qt::AlignRight:右侧对齐。

    • Qt::AlignHCenter:水平居中对齐。

  2. checkable : bool :

    标题中是否有复选框。

    如果选中该复选框,则启用组框的子项;否则,它们将被禁用且无法访问。

  3. checked : bool 是否选中了复选框。

  4. flat : bool

    是否扁平化。

    组框通常由顶部带有标题的周围框架组成。如果启用此属性,则大多数样式只绘制框架的顶部;否则,将绘制整个框架。

    注意:在某些样式中,扁平组框和非扁平组框具有相似的表示,并且可能不像在其他样式中那样可区分。

  5. title : QString

    标题文本。

    如果标题包含与符号 ('&') 后跟一个字母,则组框标题文本将具有键盘快捷键。

     g->setTitle("&User information");

    在上面的示例中,Alt+U 将键盘焦点移动到组框。

用法

  //第一步:
     QHBoxLayout *box1=new QHBoxLayout(this);
     QLabel *label1=new QLabel(QStringLiteral("男"));
     QLabel *label2=new QLabel(QStringLiteral("女"));
     QCheckBox *check1=new QCheckBox;
     QCheckBox *check2=new QCheckBox;
     QHBoxLayout *box2=new QHBoxLayout;
     box2->addWidget(check1);
     box2->addWidget(label1);
     box2->addWidget(check2);
     box2->addWidget(label2);
     QGroupBox *group=new QGroupBox(QStringLiteral("性别"));
     group->setCheckable(true);//设置复选框是否显示
     group->setChecked(false);//若为true,则组框能用,否则组框为不能用状态
     group->setAlignment(Qt::AlignHCenter);//设置信息的位置
     group->setLayout(box2);
     box1->addWidget(group);
 ​

QScrollArea(滚动区域)

简介:

QScrollArea作为容器部件来使用,提供一个可以滚动的区域窗体。 当内部控件无法全部显示时,QScrollArea可以上下或者左右滚动进行显示。 注意:使用QScrollArea时一般都是通过setWidget方法添加一个QFrame对象。

属性:

用法:

  //创建一个子窗口,这个子窗口交给滚动区域
     QWidget* pSubWidget = new QWidget();
 ​
     //在窗口(100,100)位置显示150*150大小的滚动区域
     QScrollArea* pScrollArea = new QScrollArea(this);
     //pScrollArea->setFixedSize(350, 150);
     //设置是否自动调整部件的大小.默认是false.
     //pScrollArea->setWidgetResizable(true);
     //设置对齐格式
     pScrollArea->setAlignment(Qt::AlignHCenter);
     pScrollArea->move(QPoint(100, 100));
     //设置竖直滚动策列
     pScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     //设置设置QScrollArea(滚动区域)的大小调整策略
     pScrollArea-> setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
 ​
     //给子窗口设置一个垂直排版对象,动态添加按钮进去,子窗口会自动调整大小
     QVBoxLayout* pSubLayout = new QVBoxLayout(this);
     pSubWidget->setLayout(pSubLayout);
     for (auto i = 0; i < 10; ++i)
     {
         pSubLayout->addWidget(new QPushButton(QString("test%1").arg(i), this));
     }
     pScrollArea->setWidget(pSubWidget);

QToolBox工具箱

简介:

QToolBox类提供一列带选项卡的小部件项。继承于Qframe;

工具箱是一个小部件,它一个接一个地显示一列选项卡,当前项显示在当前选项卡的下方。每个选项卡 在选项卡列中都有一个索引位置。选项卡的项是一个QWidget。

属性:

count : const int 此属性保存工具箱中包含的项的数量。

currentIndex : int 此属性保存当前项的索引

方法:

//在工具箱中添加项,可以指定项的文本内容和图标内容

int addItem(QWidget *widget, const QIcon &iconSet, const QString &text)

int addItem(QWidget *w, const QString &text)

//在工具箱中的index处插入项,可以指定项的文本内容和图标内容 int insertItem(int index, QWidget *widget, const QIcon &icon, const QString &text) int insertItem(int index, QWidget *widget, const QString &text)

//根据索引设置项是否可用 void setItemEnabled(int index, bool enabled)

//根据索引设置项的图标 void setItemIcon(int index, const QIcon &icon)

//根据索引设置项的文本 void setItemText(int index, const QString &text)

//根据索引设置项的提示内容 void setItemToolTip(int index, const QString &toolTip)

QTabWidget(标签窗体)

QTabWidget主要是用来分页显示的,每一页一个界面,众多界面公用一块区域,节省了界面大小,很 方便的为用户显示更多的信息。

常用方法

 //在标签窗体末尾添加一页,并设置页的窗体,标签名以及标签图标
 int addTab(QWidget *page, const QString &label)
 int addTab(QWidget *page, const QIcon &icon, const QString &label)
 //在标签窗体的index位置插入一页,并设置页的窗体,标签名以及标签图标
 int insertTab(int index, QWidget *page, const QString &label)
 int insertTab(int index, QWidget *page, const QIcon &icon, const QString &label)
 //设置是否可以移动标签
 void setMovable(bool movable)
 //设置标签的显示位置
 void setTabPosition(TabPosition)
 //设置标签是否可用
 void setTabEnabled(int index, bool enable)
 //设置标签是否可以关闭
 void setTabsClosable(bool closeable)
 //设置当前标签索引或者窗体
 void setCurrentIndex(int index)
 void setCurrentWidget(QWidget *widget)

枚举类型:QTabWidget::TabPosition

名称说明
QTabWidget::North0北向
QTabWidget::South1南向
QTabWidget::West2西向
QTabWidget::East3东向

QListWidget列表窗体

QListWidget(列表窗体)是一个基于项(item)的列表窗体。其父类是QListView,是基于Model(模 型)的列表视图。 QListWidget(列表窗体)包含一系列常用的关于列表窗体的操作接口。可以满足一般列表的使用要 求。 可以通过QListWidgetItem对项进行设置。

方法列表

 //在列表窗体中添加项,可以通过指定项的名称,项的对象。或者一次性添加多个项
 void addItem(const QString &label)
 void addItem(QListWidgetItem *item)
 void addItems(const QStringList &labels)
 //插入项
 void insertItem(int row, QListWidgetItem *item)
 void insertItem(int row, const QString &label)
 void insertItems(int row, const QStringList &labels)
 //获取row行的项指针
 QListWidgetItem *item(int row) const
 //根据项的内容和相关规则查找列表中的项
 QList<QListWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) 
 const
 //设置当前选中行或者项
 void setCurrentItem(QListWidgetItem *item)
 void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags 
 command)
 void setCurrentRow(int row)
 void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command)
 //设置项在添加时是否进行排序,默认不排序,按照添加的顺序显示。设置为true时按照升序排序显示。 
 void setSortingEnabled(bool enable)
 //对所有项进行排序。默认为升序。 
 void sortItems(Qt::SortOrder order = Qt::AscendingOrder)
 //设置项进入可编辑状态,
 void closePersistentEditor(QListWidgetItem *item)
 //关闭项的可编辑状态
 void openPersistentEditor(QListWidgetItem *item)
 //清空列表
 void clear()
 //信号
 //选中项发生变化时发送该信号
 void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
 //当前行发生变化时发送该信号
 void currentRowChanged(int currentRow)
 //当前项发生变化时发送该信号,参数为当前项的文本
 void currentTextChanged(const QString &currentText)
 //当item处于激活状态时发送该信号。(鼠标双击或者单击)
 void itemActivated(QListWidgetItem *item)
 //当item的内容发生变化时发送该信号
 void itemChanged(QListWidgetItem *item)
 //当鼠标单击item时发送该信号
 void itemClicked(QListWidgetItem *item)
 //当鼠标双击item时发送该信号
 void itemDoubleClicked(QListWidgetItem *item)
 //当鼠标进入item时发送该信号,必须设置setMouseTracking为true
 void itemEntered(QListWidgetItem *item)
 //当鼠标离开item时发送该信号,必须设置setMouseTracking为true
 void itemPressed(QListWidgetItem *item)
 //当选中项发生变化时发送该信号
 void itemSelectionChanged()

QStackedWidget堆叠窗体

堆栈窗体(QStackedWidget)内可以包含多个窗体,但只有一个窗体处于显示状态。可以通过设置索 引来设置显示的窗体内容。继承于、QFrame;

属性

count : const int currentIndex : int

函数

int addWidget(QWidget *widget): int count() const int currentIndex() const QWidget *currentWidget() const int indexOf(QWidget *widget) const int insertWidget(int index, QWidget *widget) void removeWidget(QWidget *widget) QWidget *widget(int index) const

QTableWidget(表格窗体)

QToolBar

属性

allowedAreas : Qt::ToolBarAreas 可以放置工具的区域

floatable:bool: 此属性保存工具栏是否可以作为一个独立窗口进行拖放。默认为true

floating : const bool 此属性保存工具栏是否为独立窗口。默认为true

iconSize : QSize

movable : bool 此属性保存用户是否可以在工具栏区域内移动工具栏,或在工具栏区域之间移动工具栏

orientation : Qt::Orientation 定义工具栏的方向

toolButtonStyle : Qt::ToolButtonStyle

函数

QT的标准对话框

QT提供了一些基本的对话框类型:

  1. 标准文件对话框(QFileDialog)

  2. 标准颜色对话框(QColorDialog)

  3. 标准字体对话框(QFontDialog)

  4. 标准输入对话框(QInputDialog)

  5. 标准消息对话框(QMessageBox)

原网站

版权声明
本文为[小丑的舞台]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_57726902/article/details/125357597