精华内容
下载资源
问答
  • Qt控件布局

    2017-09-05 14:09:41
    Qt控件布局 刚开始做布局觉得挺麻烦的,布局老是不理想,但是熟能生巧慢慢也就有一些经验了,以前不会的时候总会翻别人的文章看别人的经验觉得或多或少都得到了很多帮助,所以我把我遇到的觉得有帮助的也写出来供...

    Qt控件布局

    刚开始做布局觉得挺麻烦的,布局老是不理想,但是熟能生巧慢慢也就有一些经验了,以前不会的时候总会翻别人的文章看别人的经验觉得或多或少都得到了很多帮助,所以我把我遇到的觉得有帮助的也写出来供大家参阅,内容还不是很丰富,多多见谅!
    1.布局之后,控件大小会因为布局管理而改变,所以建议布局前先不要设置控件大小,也可以不用布局,但是使用布局可以自适应窗口大小变化,布局之后需要设置控件大小则设置最大最小尺寸
    2.布局的间隔大小设置



    展开全文
  • qt控件布局

    2013-02-20 16:01:08
    qt所有自带控件布局模式和各种效果 方便新手学习和模仿
  • 1.空白(margin)和间距(spacing)margin)和间距(spacing)。空白指的是整个布局四周距离窗体边缘的距离;...Qt 的默认风格下,子窗体部件的margin()的值是9 英寸。spacing()的值与margin()相同。void QLayo...

    1.空白(margin)和间距(spacing)margin)和间距(spacing)。

    空白指的是整个布局四周距离窗体边缘的距离;

    间距指的是布局管理器内部各个窗口部件之间的距离。

    空白属性即margin(),间距属性即spacing(),它们的默认值是有窗体的风格决定的。Qt 的默认风格下,子窗体部件的margin()的值是9 英寸。spacing()的值与margin()相同。

    void QLayout::setContentsMargins ( int left, int top, int right, int bottom )

    其中,left, top, right, 和bottom 表示环绕在布局周围的空白。对于QGridLayout 和QFormLayout,不要使用setSpacing()方法,而是要分别使用setHorizontalSpacing()和setVerticalSpacing()方法来设置水平和垂直方向。

    2.大小约束(size constraint)

    获取和设置该属性值可以通过QWidget::layout()来获取主窗口部件的布局管理器,然后可以调用QLayout::sizeConstraint()函数来查看当前的设置情况,然后再通过QLayout::setSizeConstraint()函数来设置该布局管理器的sizeConstraint 属性。它的默认值是QLayout::SetDefaultConstraint。这两种函数的原型如下:SizeConstraint sizeConstraint () const,void setSizeConstraint ( SizeConstraint )。其中,SizeConstraint 的取值可以在QLayout类的枚举中得到;
    QLayout::SetDefaultConstraint
    QLayout::SetFixedSize
    QLayout::SetMinimumSize
    QLayout::SetMaximumSize

    QLayout::SetMinAndMaxSize

    3.大小策略(size policy)

    一个QSizePolicy 既包含一个水平分量也包含一个垂直分量。可以通过QSizePolicy 找到对应的枚举值。

    4.伸缩因子(stretch factor)

    除了大小策略中包含的水平方向和垂直方向两个分量之外, QSizePolicy 类还保存了水平方向和垂直方向的一个伸缩因子。这些伸缩因子可以用来说明在增大窗体时,对不同的子窗口部件应使用的不同放大比例。即需要设置QSizePolicy::horizontalStretch 和QSizePolicy::verticalStretch 的值来实现。默认情况下,被布局管理器组合在一起的窗口部件的伸缩因子是相等的,都为0。



    展开全文
  • QT控件编程布局

    2013-04-06 19:56:13
    QT控件编程布局电子书PDF button 案例解析
  • Qt 控件自动布局

    千次阅读 2017-09-17 21:16:33
    Qt 控件自动布局

    Qt 控件自动布局

    Qt 控件自动布局 主要描述了如何在Qt Creator 界面设计时,使设计出来的应用程序窗体中控件能够跟随窗体的大小自动进行调整;这样设计出来的窗体能够更好的适配不同分辨率的屏幕。

    主要实现的界面如下:

    自动布局1

    在空窗体中放置5个QPushButton后,点击上方的垂直布局(V) Ctrl+L, 这样能够使按钮在窗体中按照垂直布局方式进行布局;

    自动布局2

    然后,向窗体中加入两个Horizontal Layout;将QPushButton拖进其中的一个Horizontal Layout中,这样能够使QPushButton始终处于水平排列状态。

    向窗体另外一个Horizontal Layout 添加两个QLabel,两个QLabel也是处于水平分布状态;此时,可以在该Horizontal Layout上右键,将该Layout变形为QTabWidget;通过这种方法可以使控件中QTabWidget中也能够处于自动布局状态。

    当需要多个Tab页面时,可直接编辑ui文件进行添加。
    这里写图片描述

    展开全文
  • qt 界面控件布局

    2020-03-28 12:21:57
    1.Qt程序中的主窗口通常具有一个中心窗口部件。调用setCentralWidget() 从理论上来讲,任何继承自QWidget的类的派生类的实例,都...2.使用布局管理器添加控件,完成局部的布局如 QGridLayout、QHBoxLayout 、QVBoxL...

    在 Qt 中,我们将窗口和控件统称为部件(Widget)

    窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、最大化按钮等。
    控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。
    QWidget 是所有用户界面元素的基类,窗口和控件都是直接或间接继承自 QWidget,QMainWindow、QWidget、QDialog 三个类就是用来创建窗口的,可以直接使用也可以继承后再使用。
    MainWindow的结构分为五个部分:菜单栏(Menu Bar)、工具栏(Toolbars)、停靠窗口(Dock Widgets)、状态栏(Status Bar)和中央窗口(Central Widget).是最常见的窗口形式,可以作为GUI程序的主窗口。中央窗口可以使用任何形式的widget来填充。一般不建议使中央窗口为空。可以使用setCentralWidget()函数来填充中央窗口。

    菜单栏是MainWindow中已经有的,需要是就使用menuBar()函数来返回;

    状态栏(Status Bar)是MainWindow中已经有的,需要是就使用statusBar()函数来返回;

    工具栏需要自己新建,然后在通过addToolBar()函数添加到窗口中。

    停靠窗口需要自己通过addDockWidget()添加。.


    QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或与用户进行互动,它可以是模态的也可以是非模态的。QDialog 没有菜单栏、工具栏、状态栏等。


     

    1.Qt程序中的主窗口通常具有一个中心窗口部件。调用setCentralWidget()

    从理论上来讲,任何继承自QWidget的类的派生类的实例,都可以作为中心窗口部件使用。一般放置在Qworkspace位置。

    2.布局流程

    a.先创建控件,如new QPushButton

    b.使用布局管理器添加控件,完成局部的布局  如 QGridLayout、QHBoxLayout  、QVBoxLayout    调用addWidget

    c.使用布局管理器把所有的局部布局整合起来。如 QGridLayout、QHBoxLayout  、QVBoxLayout    调用addLayout

    d.调用setLayout 设置全局的布局管理器显示 

     

    3.对话框的特殊按钮(如确认和取消)QDialogButtonBox

    m_pbutton = new QDialogButtonBox;
    m_pbutton->addButton(tr("确定"), QDialogButtonBox::AcceptRole);
    m_pbutton->addButton(tr("取消"),QDialogButtonBox::RejectRole);
    connect(m_pbutton, SIGNAL(accepted()), this, SLOT(OnOK()));
    connect(m_pbutton, SIGNAL(rejected()), this, SLOT(OnCancel()));

     

    4创建工具栏及按钮

    1、定义一个QAction对象,设置显示图标和文字;

    2、定义一个QToolBar对象;

    3、将QAction对象添加到QToolBar对象中;

    4、将QToolBar对象添加到待显示的窗口中;

     

     

    1.setOrientation 设置水平或垂直方向

    2.使用布局管理器来设置显示的位置,把工具栏当成一个普通的空间看待即可。

     

    注意:需要在项目中导入新添加的qrc文件(这样目录随之也会被添加进来):

    m_aboutAction = new QAction(QIcon(":/res/about.png"), tr("关于"), this);   
    //或者 m_aboutAction = new QAction(QPixmap(":/res/about.png"), tr("关于"), this);
    m_pToolBar = addToolBar(tr("ToolBar"));
    m_pToolBar->addAction(m_aboutAction);
    connect(m_aboutAction, SIGNAL(triggered()), this, SLOT(aboutSlot()));

    或者是 

    QToolButton *m_about = new QToolButton();
    connect(m_about, SIGNAL(clicked()), this, SLOT(aboutSlot()));
    m_about->setIcon(QIcon(":/res/about.png"));
    m_about->setToolTip("关于");
    m_pToolBar->addWidget(m_about);

     

    注:action是一种不可见的界面元素,主要用于菜单项、工具栏按钮的设计,其action的主要信号时trigger().

     

    QMainWindow常用的函数

    1.setCentralWidget()设置中心区域

    2.statusBar()获取状态栏 

      QStatusBar 的  addPermanentWidget:永久添加显示

                                addWidget

                                 insertWidget

    3.addToolBar() 添加工具栏         

         用到QWidget 的 addActions

                                     removeAction

                                     insertAction

     

    QTabWidget:常用的函数

    1.addTab

    2.insertTab

    3.removeTab

    4.setTabPosition   //设置tab页的位置方向

    5.setCurrentWidget

    6.currentChanged 为信号  重点使用,切换tab触发该信号

     

    QTableWidget类函数

    1.setEditTriggers(QAbstractItemView::NoEditTriggers); 将表格变为禁止编辑

    2.setSelectionBehavior(QAbstractItemView::SelectRows);  //整行选中的方式

    3.setSelectionMode(QAbstractItemView::SingleSelection  );  //设置为选中单个目标

    4.对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置

    行:horizontalHeader()->setVisible(false);
    列:verticalHeader()->setVisible(false);
    QHeaderView::sectionResized//信号,用于处理响应改变列表头的大小宽度
    5.在单元格里加入控件:
    setCellWidget
    
    6.设置行高、列宽
    1. tableWidget->setColumnWidth(3,200);
    2. tableWidget->setRowHeight(3,60);

    将行和列的大小设为与内容相匹配

    1. tableWidget->resizeColumnsToContents();

    2. tableWidget->resizeRowsToContents();

    7.获得单击单元格的内容

    cellDoubleClicked
    或itemDoubleClicked

    8.添加表头内容:

      QStringList header;

      header<<""<<tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5");

      tableWidget->setHorizontalHeaderLabels(header);

     9.setShowGrid(true);//显示表格线

    10.setColumnHidden //设置隐藏列

    11.设置垂直滚动条响应

    QScrollBar *bar = verticalScrollBar();    connect((QObject*)bar,SIGNAL(valueChanged(int)),this,SLOT(getvalue(int)));

    12.int nScrollBarHeight=this->maximumViewportSize().height();//!获取滚动条的滚动范围

    13.设置每个item 显示内容

    item = new QTableWidgetItem(str);           
    item->setTextAlignment(Qt::AlignHCenter);            
    setItem(iItem,iColumn,item);

     

     

     

    
    
    
    QTableWidgetItem
    1.单元格设置字体颜色和背景颜色 及字体字符、对齐方式
    item = new QTableWidgetItem(str);          
    item->setTextAlignment(Qt::AlignHCenter);           
    setItem(iItem,iColumn,item);            
    item->setBackgroundColor(clrBKCur);            
    item->setTextColor(clrTextCur);

    2. setdata()函数设置自定义的数据,该数据是不显示在界面上的,但与单元格相关联的。

     

    使用控件,如需特别设置控件的样式可以使用setStyleSheet来实现。

     

    MVC

    MVC 由三种对象组成。Model是应用程序对象,View是它的屏幕表示,Controller定义了用户界面如何对用户输入进行响应

    Model:

    所有的item models都基于QAbstractItemModel类,这个类定义了用于views和delegates访问数据的接口。

    数据本身不必存储在model,数据可被置于一个数据结构或另外的类,文件,数据库,或别的程序组件中。

    如果它基于table或list形式的数据结构,最好从QAbstractListModel,QAbstractTableModel开始做起

    View:

    QListView把数据显示为一个列表,QTableView把Model 中的数据以table的形式表现,QTreeView 用具有层次结构的列表来显示model中的数据。这些类都基于QAbstractItemView抽象基类.

     

    QTableWidget是QTableView的子类,主要的区别是QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(也就是不需要数据源,将逐个单元格内的信息填好即可)。这主要体现在QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的一个单元格,正个表格都需要用逐个单元格构建起来。

     

    qt用于项(item)的组件有两类:

    1.item views,包括qlistview、qtreeview、qtableview、qcolumnview等。 都是基于模型/视图(model/view)结构。

    2.item widgets,包括qlistwidget、qtreewidget、qtreewidget、qtablewidget.都是直接将数据存储在每一项。
     

     

     

    对话框:

    1.好像没有直接通过代码生成对话框的。先在c++ class 基于Qwidget生成 ,再把基从Qwidget改成QDialog,,最后补上析构函数。

    2.通过可视化ui生成对话框。

     

     

    模态对话框:exec()

    注意:在new 的方式生成对话框时。在对话框单击按钮或关闭对话框时,即如(模态对话框,exec()函数返回后),对话框只是隐藏(缺省的),而并没有从内存中删除。可以使用delete 删除对话框对象,释放内存。

     

    非模态对话框:show()

    调用setAttribute(Qt::WA_DeleteOnClose); 关闭时自动删除,释放内存。

    可通过事件触发,如下面的虚函数重写。

    virtual void keyPressEvent(QKeyEvent *event);    
    virtual void keyReleaseEvent(QKeyEvent *event);  
     virtual void focusInEvent(QFocusEvent *event);  
     virtual void focusOutEvent(QFocusEvent *event);  
     virtual void enterEvent(QEvent *event);    
    virtual void leaveEvent(QEvent *event);   
     virtual void paintEvent(QPaintEvent *event);    
    virtual void moveEvent(QMoveEvent *event);   
     virtual void resizeEvent(QResizeEvent *event);    
    virtual void closeEvent(QCloseEvent *event);

     

    对话框和主窗口调用关系通过parentwidget(),这样在对话框就可以获取到主窗口了。这个思想是vs的思想,其实还可以通过信号槽机制,实现对话框和主窗口的互动。

     

    主要窗口类

    QObject

    QWidget     QWindow

    QDialog  QMainWindow  QSplashscreen  QMdisubWindow QDesktopWidget 

    QWidget     是第三层所有的基类包括QDialog  QMainWindow 

    常用的函数

    1.void setAttribute(Qt::WidgetAttribute, bool on = true);

    WA_DeleteOnClose = 55,  //窗口关闭删除自己,释放内存
    WA_AcceptDrops = 78, //允许窗口接收拖放来的组件

    2.void setWindowFlags(Qt::WindowFlags type);

    WindowStaysOnTopHint = 0x00040000, //窗口现在在最上层

    3.void setWindowState(Qt::WindowStates state);

    WindowFullScreen = 0x00000004,//满屏

    4.void setWindowOpacity(qreal level);  //1-0之间  1表示完全不透明  0表示完全透明

     

     

    MDI(多文档)应用程序

    1.需要在主窗口工作区放置一个QMdiArea作为子窗口的容器,类似相当于tabwidget。需要在QMainWindow 中调用setcentralwidget。

    2.QMdiArea重要的函数有

    1.QMdiSubWindow *addSubWindow(QWidget *widget, Qt::WindowFlags flags = Qt::WindowFlags());

    2.QMdiSubWindow *currentSubWindow() const;

    3. QMdiSubWindow *activeSubWindow() const;

    4.QList<QMdiSubWindow *> subWindowList(WindowOrder order = CreationOrder) const;

    5. void cascadeSubWindows();  //窗口级联

    6.void closeActiveSubWindow();//窗口平铺

    7.void setViewMode(ViewMode mode);       enum ViewMode { SubWindowView, TabbedView };

     

    信号

    Q_SIGNALS:
    void subWindowActivated(QMdiSubWindow *);  //活动窗口切换时发射该信号

     

     

    QSettings 注册表的信息读写
    1. void setValue(const QString &key, const QVariant &value);   
    2. QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const;

     

     

    
     
    QCryptographicHash 加密算法类
    
    QString QDlgLogin::encrypt(const QString &str){ 
    //字符串MD5算法加密    
    QByteArray btArray;    
    btArray.append(str);//加入原始字符串    
    QCryptographicHash hash(QCryptographicHash::Md5);  //Md5加密算法    
    hash.addData(btArray);  //添加数据到加密哈希值    
    QByteArray resultArray =hash.result();  //返回最终的哈希值   
     QString md5 =resultArray.toHex();//转换为16进制字符串   
     return  md5;
    }
    

    splash 窗口:用于程序启动时的启动窗口,从QDialog继承过来。

                

     

        contextMenuEvent:虚函数,用于右键弹出菜单。

     

     

    widget.ui:如果使用ui,则会有窗体界面文件,即如widget.ui,这个文件是自动生成的,存储窗体每个组件的属性设置和布局。其实就是一个xml文件。

    ui_widget.h :是对widget.ui文件编译后自动生成的。出现在编译后的目录下。是一个与ui文件widget.ui对应的类定义文件。

    会在类的头文件自动定义一个指针 Ui::Widget *ui;   后面访问控件都是通过指针ui.   所以构造函数会有ui->setupui(this);    析构函数有:delete ui;

     

     

    展开全文
  • qt控件认知之布局控件

    千次阅读 2015-08-19 13:48:02
    1、QFormLayout:表单布局,顾名思义就是实现表单模式的布局。表单就是提示用户进行交互的一种模式,其主要有两个列组成,第一个列用于显示信息,给予用提提示,一般叫做label域,第二个是需要用户选择输入的,一般叫...
  • Qt 控件填满布局

    千次阅读 2018-10-15 15:53:59
    QPushButton *modifyBtn=new QPushButton("测试",this); QHBoxLayout *layout=new QHBoxLayout(this); layout-&gt;addWidget(modifyBtn); //重要 ...setContentsMargins(0, 0, 0, 0);... 
  • Qt手动布局和添加控件

    千次阅读 2017-03-24 16:00:06
    申明控件使用 Q类名 *控件名 = new Q类名; 格式对控件进行赋值使用 控件名->setText(“文本”);...向布局剧中添加控件使用布局名cmdLayout->addWidget(控件名);最后申明窗口类,进行显示。 例程:int mai
  • QT学习记录之控件布局

    千次阅读 2014-04-16 13:37:12
    作者:朱金灿来源:http://blog.csdn.net/clever101 想到控件布局就会想到Windows编程中要实现对话框上的控件的合理布局是一件多么艰难的事情。对此QT提出了一个很方便的解决方案。
  • qt控件

    千次阅读 2019-05-06 09:42:37
    专业各种自定义控件编写+UI定制+输入法定制+视频监控+工业控制+仪器仪表+嵌入式linux+各种串口网络通信,童叟无欺,量大...Qt编写自定义控件大全 设计师designer完整源码(仅限Qt4):https://pan.baidu.com/s/1...
  • Qt 控件填满布局——设置布局边距

    千次阅读 2020-04-14 11:08:36
    一 UI法 修改参数 二 代码法 layout->setContentsMargins(0, 0, 0, 0);
  • 使用QLabel的时候总会有一些小问题,这里记录...给QWidget控件添加边框同时不影响其子控件QLabel:分别设置widget控件和label控件的style widget->setStyleSheet("QWidget{border:1px; " //设置边框宽度 "border-s
  • 1、布局控件简介: 水平布局,里面的控件将水平展示,布局器里面的控件大小若没有固定,其大小将随着布局的大小而自动拉伸。可以通过设置其左(layoutLeftMargin)、上(layoutTopMargin)、右(layoutRightMargin)、...
  • mac下qt控件重叠
  • 代码法布局qt控件

    千次阅读 2018-07-12 23:05:50
    在这段代码布局下的截图  2、在代码中用到的函数 findButton -> setDefault ( true );   //将find按钮设置成对话框的默认按钮 通过enter键 findButton -> setEnabled ( false );   //禁用了find按键 spinbox -> ...
  • QT 代码布局控件添加下拉菜单

    千次阅读 2019-07-08 15:15:41
    QT 代码布局控件添加下拉菜单 最终实现: .h文件: #ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QPushButton> #include <QToolButton> #include <QMenu> #...
  • QT控件

    千次阅读 2014-11-30 22:48:13
    QT控件 sf2gis@163.com 2014年11月28日   1 目标:使用QT的标准可视化控件设计界面 2 方法 2.1 QFrame 所有带有边框的部件的基类。 用于调整边框效果。 2.2 QCompleter 具有自动补全功能。 可以被具有...
  • Qt界面布局和常用控件

    千次阅读 2015-01-05 21:32:05
    Qt的界面布局基本分为3种,水平布局(Horizontal Layout),垂直布局(Vertical Layout),网格布局(Grid Layout)。 通过继承QLayout,也可以实现自定义的布局类,可以参考Qt官方例程Flow Layout Example,实现了流式布局...
  • 布局中移除控件,只是子控件不在布局中显示,子控件的内存实际并未释放 三、正确写法 void deleteItem(QLayout *layout) { QLayoutItem *child; while ((child = layout->takeAt(0)) != nullptr) { //...
  • 一个很实用的小demo,动态生成控件并实现布局,有一定启发思想,共同学习
  • Qt依赖布局隐藏子控件问题

    千次阅读 2019-01-28 14:41:18
    当主窗口依赖于布局设置大小时,放大正确(如子控件show),缩小错误(如子控件hide,子控件会变化,父窗口的布局不会自适应),需要进行如下处理: widget-&gt;hide(); widget-&gt;setAttribute(Qt::WA_...
  • 2.创建Qt4自定义控件 创建一个Qt自定义控件工程。 工程名为Custom。 控件类取名Custom。 然后完成创建。 3.包含头文件与宏 此时编译出来Release版本的自定义控件放进Designer目录下仅能在Designer中...
  • QT使控件自适应布局的方法

    千次阅读 2018-08-08 11:10:31
    举个例子:在窗口里添加了一个日历,未采用布局前,窗口最大化是这样的!... 将水平和垂直策略都改为expanding,使窗口变化时,控件大小能自由变换大小,同时可以修改minimumsize和maxmumsize,设置控件最...
  • Qt布局父子控件

    2020-07-21 19:17:44
    1.QT对象间可以存在父子关系 (1)每一个对象都保存有它所有子对象的指针 (2)每一个对象都有一个指向其父对象的指针 2.当指定QT对象的父对象时 (1)其父对象会在对象链表中加入该对象的指针 (2)该对象会保存...
  • 为了更好的进行布局控制,Qt实现了常见的布局有QFormLayout,QBoxLayout,QGridLayout,QStackLayout,每个布局都有着各自的特点,在此逐个理解学习 1、QFormLayout:表单布局,顾名思义就是实现表单模式的布局。...
  • qt删除布局中的所有控件

    千次阅读 2019-08-29 10:46:33
    最近一个项目开发,需要动态的添加/删除控件,下面记录一下方法,该方法参考了网上的方法,但是没有针对layout中嵌套layout的做处理: void deleteAllitemsOfLayout(QLayout* layout){ QLayoutItem *child; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,945
精华内容 4,378
关键字:

qt控件布局