QT学习-----综合

来源:互联网 发布:python spark视频教程 编辑:程序博客网 时间:2024/06/06 21:36

由于QT的文档都是英文,本渣渣的英文水平为0,只能靠着谷歌翻译来勉强度日。
所以把用过的语法,学过的语句来记录下来,已备不时之需。

QAbstractButton

已知子类:

  1. QPushButton
  2. QToolButton
  3. QCheckBox
    connect(ui.PushButton, SIGNAL(clicked()), this, SLOT(Function()));//单击事件    connect(ui.toolButton, SIGNAL(toggled(bool)), this, SLOT(OnToolButtonX(bool)));//信号:按键按下或者弹起。需要Checkable属性为真。    isChecked();//判断按下还是弹起状态,需要Checkable属性为真。否则无效。

SIGNAL

    connect(ui.lineEdit, SIGNAL(selectionChanged()), this, SLOT(Function()));//获得焦点事件。

Function

成员函数,各个控件有通用的。

    ui.checkBox->isChecked();//判断是否选中,返回bool    ui.checkBox->setEnabled(true);//设置控件是否被禁止。参数为bool.

QmessageBox

    QMessageBox megBox;//声明并定义变量。    mesBox.setText("abc");//设置信息框文字。    mesBox.exec();//显示框体。    QMessageBox::information(this, "Error", "bad bady"); //弹出信息框,提示信息,标题.

Qcombobox

    connect(ui.comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(OncomboBox(int)));//信号:当索引改变的时候。    ui.comboBox->addItem("lineEdit", "1");//插入文本并且插入关联数据    ui.comboBox->insertItem(2, "yxz", "5");//插入文本和关联数据再索引位置为2。    int index = ui.comboBox->currentIndex();//获得当前索引。    QString text = ui.comboBox->itemData(index).toString();//获得索引位置的关联数据    QString text1 = ui.comboBox->itemText(index);//获得索引位置的文本    QString text2 = ui.comboBox->currentText();//获得文本    ui.comboBox->setEditable(true);//设置comboBox是否可以编辑。    ui.comboBox->setEditText("asdf");//设置当前文本.

字符集

  • 编码和字节的问题:
    • 各种编码库的不同,定义的长度不同。例如:ascii码只占用1个字节,GBK编码却要占用2个字节。这是规定不同导致。
    • Unicode 又称统一码,解决了各国编码不统一的问题,有3种格式:
      • utf-8 比较常用的就是utf-8.utf-8是自动判断字的二进制编码,用1-4的字节来存储。
      • utf-16 2个字节存储。例如:’我’GBK下3个字节,用utf-8也是3个字节,但是用utf-16,2个字节就能保存。
      • utf-32 4个字节存储。

QTextCodec

    QTextCodec* pCode = QTextCodec::codecForName("GBK");//先设置这个编码格式。(匹配解码器,未匹配返回0)    if(!pCode) return "";    QByteArray arr = pCode->fromUnicode(qstr);//将str用Unicode-16的编码解码,并且返回QByteArray类型。    string cstr = arr.constData();//和data略有区别,data会导致深拷贝,constData不会进行拷贝,只是只读。    QString str = "你好中国";//编码不对。cpp默认GBK编码,所以"你好中国"这个字符串字面常量是一个GBK编码的。QString默认编码unicode-16    ui.lineEdit->setText(str);//所以显示乱码。    //GBK转到QString    QString str1 = QString::fromLocal8Bit("你好中国");//转换到本地默认编码,从GBK转到QString    ui.lineEdit->setText(str1);    //QSstring 转 GBK    QString str = ui.lineEdit->text();    QByteArray bytes = str.toLocal8Bit();//转换到本地默认编码,vs也就是GBK编码了。所以转到GBK编码。//  const char * gbk = bytes.data();//获取地址就好了。    //utf-8 转 utf-16    char utf8[] = {0xE5, 0x88, 0x98,0xE4, 0xBA, 0x9A, 0xE8, 0xA5, 0xBF,0};//UTF-8编码内存.    QString str2 = QString::fromUtf8(utf8);//转换UTF-16    //utf-16 转 utf-8    QString str = ui.lineEdit->text();//获得文本    QByteArray bytes = str.toUtf8();//转换到utf-8    const char * utf8 = bytes.data();//获得地址    int size = bytes.size();    QString str1 = QString::fromUtf8(utf8);//再转换到utf-16格式。

QDialog(对话框)

  1. 先创造一个类,父类是QDialog
  2. 然后在主程序加载这个类的头文件即可进行操作
    //构造函数内添加初始值,添加一个const char * text;    Dialog(const char * text,QWidget *parent = 0);    //新建一个Dialog类型。    Dialog buf("shaofa", this);    int ret = buf.exec();//模式对话框会阻塞程序。点击按钮会调用对象框的按钮时间。返回值由自己设置。    if(ret == buf.Accepted && buf.m_user == buf.m_password)//如果点击确定的话。    {        qDebug() << buf.m_user << buf.m_password;    }
    QString filename = QFileDialog::getOpenFileName(this, x);//设置标题。x代表UTF-16编码,打开文件    QString filename = QFileDialog::getSaveFileName(this, GBK::ToUnicode("保存文件"));//保存文件
原创粉丝点击