QtQuick 学习笔记(一)容器组件

1. QGroupBox

功能

提供分组框支持,可在其中布置多种窗口部件

常用函数与组件

  • void setChecked ( bool checked )
    QGroupBox使能
  • void setTitle ( const QString & title )
    标题文本设置

效果及功能测试

在这里插入图片描述

GroupBox.cpp

#include <QApplication>
#include <QDialog>
#include <QVBoxLayout>
#include <QGroupBox>
#include <QRadioButton>
#include <QCheckBox>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDialog w;
    QGroupBox *group = new QGroupBox("option");
    group->setCheckable(true);
    group->setChecked(true);
    QRadioButton *radio1 = new QRadioButton("banana");
    QRadioButton *radio2 = new QRadioButton("pear");
    QRadioButton *radio3 = new QRadioButton("apple");
    radio1->setChecked(true);
    QCheckBox *check = new QCheckBox("rice");
    check->setChecked(true);
    QVBoxLayout *vbox = new QVBoxLayout;
    vbox->addWidget(radio1);
    vbox->addWidget(radio2);
    vbox->addWidget(radio3);
    vbox->addWidget(check);
    group->setLayout(vbox);
    w.setLayout(vbox);
    w.show();
    return a.exec();
}

2. QScrollArea

功能

用于添加滚动条,方便查看子控件

常用函数

  • QScrollArea::QScrollArea(QWidget *parent = 0)
    构造一个父对象为parent的ScrollArea
  • void QScrollArea::setWidget(QWidget *widget)
    设置控件widget为QScrollArea组件的子控件
  • QWidget *SCrollArea::takeWidget()
    删除QScrollArea的子控件
  • QWidget *QScrollArea::widget()const
    返回QScrollArea的子控件

效果及功能测试

在这里插入图片描述

ScrollArea.cpp

#include <QApplication>
#include <QLabel>
#include <QImage>
#include <QScrollArea>
#include <QHBoxLayout>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    QLabel *label = new QLabel(&w);
    QImage image("/home/dyq/test/QT/51cto/ScrollArea/2.jpg");
    QHBoxLayout *lay = new QHBoxLayout(&w);
    label->setPixmap(QPixmap::fromImage(image));

    QScrollArea *scrollarea = new QScrollArea(&w);

    scrollarea->setWidget(label);

    scrollarea->setWidgetResizable(1);

    scrollarea->setBackgroundRole(QPalette::Dark);
    lay->addWidget(scrollarea);
    w.setLayout(lay);
    w.show();
    return a.exec();
}

3. QToolBox

功能

提供页和隔间

常用函数

  • QToolBox::QToolBox(QWidget *parent = 0,const char *name = 0,QFlags f = 0)
    构造一个名称为name,父对象为parent和标志位f的ToolBox
  • int addItem(QWidget *item,const QIconSet &iconSet,const QString &label)
    增加一个item到ToolBox的底部,新增加的item的标签的文本是label,标签的图标是iconSet
  • int addItem(QWidget *item,const QString &label)
    增加一个item到ToolBox底部,新增加的item的标签文本是label
  • int ToolBox::count()const
    返回工具箱中item数目
  • int ToolBox::currentIndex()const
    返回当前活动item的索引
  • QWidget *QToolBox::currentItem()const
    返回当前活动item,如果该ToolBox为空,返回0
  • int ToolBox::indexof(QWidget *item)const
    返回item的索引
  • int QToolBox::insertItem(int index,QWidget *item,const QIconSet &iconSet,const QString &label)
    在索引index处插入一个新的项目,项目是item,标签图标是iconSet,标签文本时label,返回插入item的索引
  • int QToolBox::insertItem(int index,QWidget *item,const QString &label)
    在索引index处插入一个新的项目,项目的名称是item,标签文本是label,返回插入item的索引。
  • QWidget *QToolBox::item(int index)const
    返回索引为index位置的item
  • QString QToolBox::itemLabel(int index)const
    返回索引为index位置的标签
  • int QToolBox::RemoveItem(QWidget *item)
    删除ToolBox中的item的项目,删除成功后返回item的索引,否则返回-1
  • void QToolBox::setCurrentIndex(int index)
    设置索引为index位置的项目为当前活动项目
  • void QToolBox::setCurrentIndex(QWidget *item)
    设置索引item为当前活动的项目
  • void QToolBox::setItemLabel(int index,const QString &label)
    设置label为索引index位置的项目的标签文本

效果及功能测试

在这里插入图片描述

toolbox.h
      
#ifndef TOOLBOX_H
#define TOOLBOX_H
#include <QToolBox>
#include <QToolButton>
#include <QGroupBox>
#include <QVBoxLayout>
class ToolBox : public QToolBox
{
    Q_OBJECT
public:
    explicit ToolBox(QWidget *parent = 0);
private:
    QToolButton *button1;
    QToolButton *button2;
    QToolButton *button3;
    QToolButton *button11;
    QToolButton *button12;
};

#endif // TOOLBOX_H
toolbox,cpp

#include <toolbox.h>
ToolBox::ToolBox(QWidget *parent) : QToolBox(parent)
{
    setWindowTitle("ToolBox");

    button1 = new QToolButton;
    button1->setText("Apple");
    button1->setAutoRaise(true);
    button1->setToolButtonStyle(Qt::ToolButtonFollowStyle);
    button2 = new QToolButton;
    button2->setText("Banana");
    button2->setAutoRaise(true);
    button2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    button3 = new QToolButton;
    button3->setText("Pear");
    button3->setAutoRaise(true);
    button3->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    QGroupBox *group = new QGroupBox;
    QVBoxLayout *layout = new QVBoxLayout(group);
    layout->setMargin(10);
    layout->setAlignment(Qt::AlignHCenter);
    layout->addWidget(button1);
    layout->addWidget(button2);
    layout->addWidget(button3);
    layout->addStretch();

    button11 = new QToolButton;
    button11->setText("HP");
    button11->setAutoRaise(true);
    button11->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    button12 = new QToolButton;
    button12->setText("Lenovo");
    button12->setAutoRaise(true);
    button12->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

    QGroupBox *group2 = new QGroupBox;
    QVBoxLayout *layout2 = new QVBoxLayout(group2);
    layout2->setMargin(10);
    layout2->setAlignment(Qt::AlignHCenter);
    layout2->addWidget(button11);
    layout2->addWidget(button12);
    layout2->addStretch();
    this->addItem((QWidget*)group, "Fruits");
    this->addItem((QWidget*)group, "Computer");
}
main.cpp

#include "toolbox.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ToolBox toolbox;
    toolbox.show();
    return a.exec();
}

4. QTabWidget

功能

提供页面标签选择项,便于切换不同界面

常用函数

  • QTabWidget::QTabWidget(QWidget *parent = 0,const char *name = 0,WFlags f = 0)
    构造一个名称为name、父对象为parent和标记为f的TabWidget
  • void QTabWidget::addTab(QWidget *child,const QString &label)[virtual]
    增加子页到TabWidget,子页控件是child,子页标签文本是label
  • void QTabWidget::addTab(QWidget *child,const QIconSet &iconset,const QString &label)[virtual]
    增加子页到TabWidget,子页控件是child,iconset是图标,子页标签文本是label
  • QString QTabWidget::tabLabel(QWidget *w)const
    返回索引index处子页的选项标签文本
  • void QTabWidget::changeTab(QWidget *w,const QString &label)
    更改子页w的标签文本为label
  • void QTabWidget::changeTab(QWidget *w,const QIconSet &iconset,const QString &label)
    更改子页w的图标为iconset,和更改标签文本为label
  • int QTabWidget::count()const
    返回该TabWidget中子页的数目
  • QWidget *QTabWidget::currentPage()const
    返回当前活动子页
  • int QTabWidget::currentPageIndex()const
    返回当前活动子页的索引
  • int QTabWidget::indexOf(QWidget *w)const
    返回子页w的索引
  • void QTabWidget::insertTab(QWidget *child,const QString &label,int index = -1)[virtual]
    在索引index处插入新的子页,子页控件是child,子页标签文本是label。在插入新的子页时要确保插入的子页名与标签文本与TabWidget中的所有子页不同,如果指定index就是在指定的位置插入,否则就和简单地添加一样。
  • void QTabWidget::insetTab(QWidget *child,const QIconSet &iconset,const QString &label,int index = -1)[virtual]
    在索引index处插入新的子页,子页控件是child,子页标签文本是label,子页图标为iconset
  • QString QTabWidget::label(int index)const
    返回索引index处子页的选项标签
  • QWidget *QTabWidget::page(int index)const
    返回索引index处子页
  • void QTabWidget::removePage(QWidget *w)[virtual slot]
    删除子页w
  • void QTabWidget::setCurrentPage(int index)[slot]
    设置索引index处子页为当前活动页
  • void QTabWidget::setTabLabel(QWidget *w,const QString &label)
    设置子页w的标签文本为label

效果及功能测试

在这里插入图片描述
在这里插入图片描述

TabWideget.cpp
      
#include <QApplication>
#include <QLabel>
#include <QHBoxLayout>
#include <QTabWidget>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTabWidget *tab = new QTabWidget;

    QWidget *w = new QWidget(tab);
    QPushButton *button1 = new QPushButton("OK",w);
    QPushButton *button2 = new QPushButton("NO",w);
    QHBoxLayout *hlayout = new QHBoxLayout(w);
    hlayout->addWidget(button1);
    hlayout->addWidget(button2);
    tab->addTab(w,"option1");

    QLabel *label = new QLabel("QT",tab);
    tab->addTab(label,"option2");
    tab->setWindowTitle("QTabWidget");

    tab->show();
    return a.exec();
}

5. QStackedWidget

功能

使用栈来对控件进行管理

常用函数

  • QWidgetStack::QWidgetStack(QWidget parent = 0,const char name = 0)
    构造一个名称为name,父对象为parent的WidgetStack
  • int QWidgetStack::addWidget(QWidget *w,int id = -1)
    把控件w添加到控件栈中,标识为id
  • int QWidgetStack::id(QWidget *w)const
    返回控件w的标识
  • void QWidgetStack::raiseWidget(int id)[slot]
    把标识为id的控件升到控件栈的栈顶
  • void QWidgetStack::raiseWidget(QWidget *w)[slot]
    把控件w升到控件的栈顶
  • void QWidgetStack::removeWidget(QWidget *w)
    把控件w从控件栈中删除
  • QWidget *QWidgetStack::widget(int id)const
    返回标识为id的控件

效果及功能测试

在这里插入图片描述
在这里插入图片描述

StackedWidget.cpp
      
#include <QApplication>
#include <QDialog>
#include <QListWidget>
#include <QStackedWidget>
#include <QLabel>
#include <QHBoxLayout>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDialog w;
    w.setWindowTitle("StackWidget");
    //set list box
    QListWidget *leftlist = new QListWidget(&w);
    leftlist->insertItem(0,"window1");
    leftlist->insertItem(1,"window2");
    leftlist->insertItem(2,"window3");
    //set stack windows
    QLabel *label1 = new QLabel("WindowTest1\n\tby liming");
    QLabel *label2 = new QLabel("WindowTest2\n\tby liming");
    QLabel *label3 = new QLabel("WindowTest3\n\tby liming");
    QStackedWidget *stack = new QStackedWidget(&w);
    stack->addWidget(label1);
    stack->addWidget(label2);
    stack->addWidget(label3);
    //set mainlayout window
    QHBoxLayout *mainLayout = new QHBoxLayout(&w);
    mainLayout->setMargin(5);
    mainLayout->setSpacing(5);
    mainLayout->addWidget(leftlist);
    mainLayout->addWidget(stack,0,Qt::AlignHCenter);
    mainLayout->setStretchFactor(leftlist,1);
    mainLayout->setStretchFactor(stack,3);
    w.connect(leftlist,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
    w.show();

    return a.exec();
}

6. QFrame

功能

有框架的窗口部件的基类,QFrame框架组件用来存放其他控件,也可用于装饰,一般用来作为更加复杂容器的基础,也可以用在form中作为占用控件

常用函数

  • QFrame::QFrame(QWidget *parent = 0,const char *name = 0,WFlags f = 0)
    构造一个框架风格为NoFrame并且1像素框架宽度的框架窗口部件,如:QFrame *f = new();

效果及功能测试

在这里插入图片描述

Frame.cpp
      
#include <QApplication>
#include <QLabel>
#include <QHBoxLayout>
#include <QTabWidget>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget *win = new QWidget;
    QLabel *label = new QLabel("BOX");
    QLabel *label1 = new QLabel("Panel");
    QLabel *label2 = new QLabel("Winpanel");
    QLabel *label3 = new QLabel("H line");
    QLabel *label4 = new QLabel("V line");
    QLabel *label5 = new QLabel("Styled Panel");
    label->setFrameStyle(QFrame::Box | QFrame::Raised);
    label->setLineWidth(2);
    label1->setFrameStyle(QFrame::Panel | QFrame::Raised);
    label1->setLineWidth(2);
    label2->setFrameStyle(QFrame::WinPanel | QFrame::Raised);
    label2->setLineWidth(2);
    label3->setFrameStyle(QFrame::HLine | QFrame::Raised);
    label3->setLineWidth(2);
    label4->setFrameStyle(QFrame::VLine | QFrame::Raised);
    label4->setLineWidth(2);
    label5->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
    label5->setLineWidth(2);
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(label);
    layout->addWidget(label1);
    layout->addWidget(label2);
    layout->addWidget(label3);
    layout->addWidget(label4);
    layout->addWidget(label5);
    win->setLayout(layout);
    win->showMaximized();
    return a.exec();
}

7. QWidget

功能

是所有用户界面对象的基类,QWidget组件在创建时是不可见的,可以包含子控件,在删除Widget时,子控件也一起删除。

常用函数

  • QWidget::QWidget(QWidget *parent = 0,const char *name = 0,WFlags f = 0)
    构造一个名称为name,父对象为parent的Widget
  • QWidget *QWidget::childAt(int x,int y,bool includeThis = FALSE)const
    返回该Widget坐标系统中像素位置(x,y)处的可视的子窗口部件
  • QWidget *QWidget::childAt(const QPoint &p,bool includeThis = FALSE)const
    返回该Widget坐标系统位置p处的可视的子窗口部件
  • void QWidget::drawText(int x,int y,const QString &str)
    在该Widget坐标系统中像素位置(x,y)处绘制字符串str
  • void QWidget::drawText(const QPoint &p,const QString &str)
    在该Widget坐标系统中位置p处绘制字符串str

8. QMdiArea

功能

支持多文档界面显示,多用于一个项目中使用多个文件的情况

常用函数

  • QMdiArea::QMdiArea(QWidget *parent = 0)
    构造一个父对象为parent的MdiArea
  • void QMdiArea::activateNextSubWindow()[slot]
    激活下一个窗口
  • void QMdiArea::activatePreviousSubWindow()[slot]
    激活上一个窗口
  • QMdiSubWindow *QMdiArea::activateSubWindow()const
    返回当前活动子窗口,如果当前没有活动子窗口,返回0
  • QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget,Qt::WindowFlags windowFlags = 0)
    添加一个新的子窗口部件
  • void QMdiArea::closeActiveSubWindow()[slot]
    关闭当前活动子窗口
  • void QMdiArea::closeAllSubWindow()[slot]
    关闭所有子窗口
  • QMdiSubWindow *QMdiArea::currentSubWindow()const
    函数功能同activeSubWindow(0
  • void QMdiArea::removeSubWindow(QWidget *widget)
    删除widget,widget必须是该MdiArea的子部件
  • void QMdiArea::setActiveSubWindow(QMdiSubWindow *window)[slot]
    设置子窗口window为当前活动子窗口

效果及功能测试

在这里插入图片描述

MidArea.cpp
      
#include <QApplication>
#include <QMdiArea>
#include <QMdiSubWindow>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMdiArea *mdi = new QMdiArea;
    QMdiSubWindow *sub = new QMdiSubWindow;
    QLabel *label = new QLabel("hello");
    sub->setWidget(label);
    sub->setAttribute(Qt::WA_DeleteOnClose);
    mdi->addSubWindow(sub);
    mdi->show();
    return a.exec();
}

9. QDockWidget

功能

提供窗口停靠功能,且可移动、悬浮、关闭

常用函数

  • QDockWidget::QDockWidget(const QString &title,QWidget *parent = 0,Qt::WindowFlags flags = 0)
    构造一个标题为title,父对象为parent的DockWidget
  • QDockWidget::QDockWidget(QWidget *parent = 0,Qt::WindowFlags flags = 0)
    构造一个父对象为parent和标志位flags的DockWidget
  • void QDockWidget::setTitleBarWidget(QWidget *widget)
    设置widget为DockWidget的标题栏,如果widget为0,将用默认标题栏代替
  • QWidget *QDockWidget::titleBarWidget()const
    返回DockWidget定义的标题栏,如果没有定义标题栏,返回0
  • void QDockWidget::setWidget(QWidget *widget)
    设置widget为DockWidget的部件,在调用setWidget函数之前,必须添加布局,否则widget就是不可见的
  • QWidget *DockWidget::widget()const
    返回DockWidget的部件,如果没有设置部件,则返回0

效果及功能测试

在这里插入图片描述

DockWidget.cpp
      
#include <QApplication>
#include <QTextEdit>
#include <QDockWidget>
#include <QMainWindow>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow w;
    w.setWindowTitle("DockWindows");
    QTextEdit *te = new QTextEdit(&w);
    te->setText("Main Window");
    te->setAlignment(Qt::AlignCenter);
    w.setCentralWidget(te);
    //DockWindow1
    QDockWidget *dock = new QDockWidget("DW1",&w);
    dock->setFeatures(QDockWidget::DockWidgetMovable);
    dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
    QTextEdit *tel = new QTextEdit();
    tel->setText("Window1, the dock widget cam be moved between docks and users");
    dock->setWidget(tel);
    w.addDockWidget(Qt::LeftDockWidgetArea,dock);
    //DockWindow2
    dock = new QDockWidget("DW2",&w);
    dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable);
    QTextEdit *te2 = new QTextEdit();
    te2->setText("Window2, The dock widget can be detac from the main window,""and float as an independent window, and can be closed.");
    dock->setWidget(te2);
    w.addDockWidget(Qt::RightDockWidgetArea,dock);
    //DockWindow3
    dock=new QDockWidget("DW3",&w);
    dock->setFeatures(QDockWidget::AllDockWidgetFeatures);
    QTextEdit *te3 = new QTextEdit();
    te3->setText("Window3, The dock widget can be closed, moved and float");
    dock->setWidget(te3);
    w.addDockWidget(Qt::RightDockWidgetArea,dock);
    w.show();

    return a.exec();
}
  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值