Qt学习笔记03_几个抽象类的组件

时间:2022-08-24 23:17:28
按钮部件:
    QAbstractButton是按钮部件的抽象基类,提供按钮通用的功能。它的子类:复选框QCheckBox,单选框QPushButton,QRadioButton,和工具按钮QtoolButton.
一般要把一组按钮放到一个QGroupBox中进行管理。

QGroupBox:
    QGroupBox组件提供有一个标题的盒框架和快捷键,并且在自身内显示其他各种不同的组件,标题在最上面,快捷键把快捷键的焦点移动到GroupBox中的一个子组件上。它可以设置标题和标题的对齐方式,GroupBox有Checkable属性,在GroupBox中的子组建有效或者是无效取决于GroupBox是否 Checked.还可一使用flat属性来设置最小化它对空间的消耗。



QCheckBox:
    CheckBox可以设置tristate属性,让它拥有不改变状态,选中状态,未选中状态3种。
CheckBox组件提供一个复选框和一个文本框。bool istristate() true:三态的复选框,false:复选框有两种状态。 SetChecked 设置是否选中。SetCheckState(Qt::CheckState) checked unchecked partiallyChecked 部分选中。isChecked()来查看一个按钮是否被选中。
对于选择后的操作可以关联stateChanged()信号和槽,也可以使用

// SIGNAL QCheckBox::StateChanged
StateChanged(int state):无论何时CheckBox的状态改变了,这个函数就发送状态信号。



QLineEdit:
    单行文本编辑器,允许用户输入和编辑单行的文本内容。
1.显示模式 4种:
    Normal:
    NoEcho:
    Password:
    PassWorldEchoOnEdit:
2.输入掩码:
    inputMask来限制输入的内容,字母大写表示必须输入,(*)括号中小写表示可留空
    A(a) A~Z,a~z;
    N(n) A~Z,a~z,0~9;
    X(x) 任意字符;
    9(0) 0~9;
    D(d) 1~9;
    H(h) 16进制数;
    B(b) 2进制数;
    >(<) 后面的字母转换为大写|小写
    !   停止大小写转换
    /    特殊字符真常显示
    #    +/- /0~9
//eg:lineEdit3->setInputMask("0000-00-00");

3.输入验证:
    验证器validator,可以对输入进行验证,用法:
           QValidator *validator = new QIntValidator(1,1000,this);
            lineEdit4->setValidator(validator); //lineEdit4只能输入一个1~1000内的整数

QIntValidator类:
    The QIntValidator class provides a validator that ensures a string contains a valid integer within a specified range.
    QIntValidator类提供一个可以确保一个包含一个特定整数范围的 字符串 验证。
QDoubleValidator 设置浮点数。如果需要设置更一般的约束,就需要正则表达式了。
//获得焦点和清除焦点
setFocus(Qt::FocusReason);
clearFocus();
4.自动补全
    QLineEdit还有很强大的自动补全功能,用QCompleter实现。
    用法:  QStringList list;
          list<<"Qt"<<"completer"<<"apple"<<"banana"<<"coco"<<"display"<<"enable"<<"focus"<<"glory"\
                    <<"hero"<<"input"<<"jobornize"<<"kiss"<<"lollipop"<<"monster"<<"navite"<<"oppo";
            QCompleter *completer = new QCompleter(list,this);
            //设置大小写不敏感
            completer->setCaseSensitivity(Qt::CaseInsensitive);
            lineEdit1->setCompleter(completer);

QCompleter:
    QCompleter类基于条目item模式提供匹配,在任何Qt Widget中都可用,当用户开始输入的时候它就会基于提供的Wordlist提供各种可能的匹配。在词列表是静态的简单应用中可以用QStringList作为补全条目的构造器。


QAbstractSpinBox类:
    是一个抽象基类,提供了一个竖直设定框和一个行编辑器来显示设定值,它的3个子类,QDateTimeEdit,QSpinBox和QDoubleSpinBox分别来完成日期,整数,浮点数的设定。

     timeEdit = new QTimeEdit(this);
        dateEdit = new QDateEdit(this);
        dateTimeEdit = new QDateTimeEdit(this);

        //时间的显示格式
        timeEdit->setDisplayFormat("h:mm:ssA");
       //用弹出的日历部件来设置日期
        dateEdit->setCalendarPopup(true);

        //设置目前的时间
        dateTimeEdit->setDateTime(QDateTime::currentDateTime());
        //设置显示时间的格式
        dateTimeEdit->setDisplayFormat(tr("yyyy 年 MM 月 dd 日 ddd HH:mm:ss "));


QspinBox:
    Spin Box widget,inherited from QAbstractSpinBox
spinBox 的属性:后缀suffix,前缀prefix,最小值minimum,最大值maximum,singleStep每次变化的步值,默认是1。
DoubleSpinBox增加了decimals来设置小数点的位数。
程序中使用value()来获取设置的值。
如果新值和原始的值不同setValue()会发送valueChanged()的信号.

滑块部件:QAbstractSlider
    它可以由滑块定位来确定一个区间内的任意值,这个抽象基类有2个子类,QScrollBar,QSlider,Qdial, ScrollBar用在ScrollArea中来实现滚动区域,QSlider用来实现音量控制或者播放器的进度,QDial是一个表盘。
QScrollBar:
    该组件提供垂直或者水平方向的滑动条。
    构造函数:QScrollBar ( Qt::Orientation orientation, QWidget * parent = 0 )
Qrientation:    Qt::Horizontal
                         Qt::Vertical    
属性:maximum最大值,minimum最小值,singleStep每一步的步值,PageStep每页的步长,就是按pageUp,pageDown的值,默认是10。 tracking 默认是true即滑块没改变一个值就会发送一个valueChanged()信号;设置为false的时候只是在鼠标键松开的时候发送valueChanged()信号。
invertedApperance属性设置滑块所在的位置,TickPosition 设置刻度的位置,默认没有刻度;TickInterval用来设置刻度间隔。
Dial:
属性:wrapping,设置是否首尾相连,notchTarget设置刻度之间的间隔,默认是3.7像素。notchesVisibel设置是否显示刻度。它的信号:SliderMoved(int)继承于QAbstractSlider。
好多的属性都来自QAbstractSlider。

//其实,多子棋的棋子数目选择的时候就可以用QSpinBox
// words
flat: adj:平坦的,扁平的;浅的,单调的
    n:平地,平面,公寓
    vi:变平
    vt:使变平
consumption: n:消费,消耗
toggle:n:开关,触发器;拴扣
    vi:栓牢,系紧

trigger:vt:引发,引起,触发
    n:扳机
    n:[电子]触发器

constructor:n:构造函数,构造器;建造者。

discrete:
    adj:离散的,不连续的
    n:分立元件,独立部件
decimal: adj:小数的,十进位的;
    n:小数;
orientation:n:方向,定向