QT常用函数和总结(持续更新)

前情回顾
我又有一个多月没写博客了,上个月太忙了,忙着毕业设计跟论文,请了一个多月的假,实习也快结束了,我把我遇到的写下来,大家一起学习。

内容

	一、trimmed       //删除字符头尾空格
	
	二、setEchoMode  //设置密码保护(输入字符为小黑点)		
	//输入什么就显示什么
    1、echoLineEdit->setEchoMode(QLineEdit::Normal);
    //密码,一般是用小黑点覆盖你所输入的字符
    2、echoLineEdit->setEchoMode(QLineEdit::Password);
    //编辑时输入字符显示输入内容,否则用小黑点代替
    3、echoLineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);
    //任何输入都看不见(只是看不见,不是不能输入)
    4、echoLineEdit->setEchoMode(QLineEdit::NoEcho);

	三、setFocus 设置光标的位置

	四、给按钮删除立体感  控件->setFlat(true);

	五、background-position:center;background-repeat:no-repeat 背景图片 居中与平铺

	六、v->setSizeConstraint(QLayout::SetFixedSize) 窗口会随着内容的多少调整窗口大小

	七、QT之单步调试:在工具中的调试器中源码路径映射中的添加qt源码:把qt的安装路径放进去。
	
	八、对于QTabWidget这个控件类来说,要给每个菜单设置背景记得要加::pane,或者QTabWidget QWidget#objectName(菜单的name)

	九、QComboBox信号与槽函数
	connect(m_pComboBox_InputType,SIGNAL(currentTextChanged(QString)), this, SLOT(on_comboBox_currentTextChanged()));
	void AddPara::on_comboBox_currentTextChanged()
	{
	    if(m_pComboBox_InputType->currentText().compare("select") != 0)
	    {
	        m_pLabItems->hide();
	        m_pLineEdit_Items->hide();
	    }
	    else
	    {
	        m_pLabItems->show();
	        m_pLineEdit_Items->show();
	    }
	}

十、如果有时候setStyleSheet不起作用,就要重写paintEvent事件进行重载

11、

		QPixmap p(获取图片路径);
    	控件->setPixmap(p);//设置显示的图片

12、
滚动条:

		QScrollArea *scroll = new QScrollArea();
		QWidget *widget = new QWidget();//对该widget中的布局已经完成
	    scroll->setWidget(widget);

13、getItemPosition函数:

		int index = btn->boxV->indexOf(btn);//get btn position
		int row , column, rowSpan, columnSpan;
		if(-1 != index)
		{
			btn->boxV->getItemPosition(index, &row, &column, &rowSpan, &columnSpan);//Location information of index control
		}

14、

DESTDIR = $$PWD/../bin/debug // 放置目标文件。
将debug与release版本生成的目标文件分别放置想要的文件夹:
CONFIG(debug,debug | release):DESTDIR = $$PWD/../../../../Simulator
else:DESTDIR = $$PWD/../build-uai-Desktop_Qt_5_6_3_MinGW_32bit-Release/release

	debug:DESTDIR = $$_PRO_FILE_PWD_/../../../Win32/debug
  	release:DESTDIR = $$_PRO_FILE_PWD_/../../../Win32/release

更多干货:QT之pro配置详情

15、关闭窗口出现警告:重载closeEvent(QCloseEvent *event),在函数中添加:
(另外,在函数中试用close()函数,会触发closeEvent事件,例如下面slotOk()函数,保存完文件之后,要关闭整个窗口,使用close(),返回值使用return不符合逻辑,使用exit(0)是正常程序退出的时候用到,虽然可以达到效果,只是这个函数是直接退出程序,析构那边好像有点问题,跟exit(1)是在非正常关闭程序时使用的函数,有所差别。再说回来,只能使用close()函数,解决办法就是加个全局变量来使用)。

int ret = QMessageBox::warning(0,"Tips",QString("Do you want to save it to the current path?"),QMessageBox::Yes
                                       | QMessageBox::No| QMessageBox::Close,QMessageBox::No);
        if(ret == QMessageBox::No )
        {
            event->accept();
        }
        else if(ret == QMessageBox::Yes)
        {
            slotOk();//文件保存
        }
        else
        {
            event->ignore();
        }

16、布局QGridLayout,水平居中,靠右,靠左等

    AlignLeft: 水平左对齐
	AlignRight: 水平右对齐
	AlignCenter:垂直、水平居中
	AlignHCenter:水平居中
	AlignTop:垂直上对齐
	AlignBottom:垂直下对齐
	AlignVCenter,:垂直居中
	AlignBaseiine:垂直基线对齐
	AlignJustify: 填满空间
	
	QGridLayout *pLayout = new QGridLayout(this);
	pLayout->addWidget(btn, 0, 0,  Qt::AlignTop);

17、读取文件中的内容作用在setStylesheet函数中,文本中的注释用/*,//不起作用。

18、项目中添加lib,在pro中的LIBS下加-l…lib

19、QLabel的超链接:

pLab4->setOpenExternalLinks(true);
pLab4->setText(tr("<a href=\"http://www.123123.com.cn/\">http://www.123123.com.cn"));

20、背景渐变色:

double Rate = double(nY) / double(nHeight);
QString strStyleSheet = "QWidget {background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(232, 235, 238, 255), stop:";
    strStyleSheet += QString::number(Rate);
    strStyleSheet += " rgba(232, 235, 238, 255), stop:";
    strStyleSheet += QString::number(Rate + 0.0001);
    strStyleSheet += " rgba(151, 167, 182, 255), stop:1 rgba(151, 167, 182, 255));}";
    this->setStyleSheet(strStyleSheet);

21、QDockWidget的初始化跟大小设置
22、子线程与GUI主线程通信,进行信号与槽时,connect函数里第五个参数添加(Qt::BlockingQueuedConnection)。
23、从路径中选择文件并打开文件,开始对文件操作:

QString strName = QFileDialog::getOpenFileName(this, "Tipic");
QFile file(strName .trimmed());

24、QFileDialog类,getSaveFileName(选择文件保存),getOpenFileName(打开文件),以及后边的打开的文件类型条件:

QString fileNameConvert = QFileDialog::getSaveFileName(this, "ConvertFile",QString(),
                                                         "Link(*.l);;All Files(*.*)");

    if(fileNameConvert.isEmpty())
    {
        return;
    }
    QFile fileConvert(fileNameConvert.trimmed());
    
    QString strName = QFileDialog::getOpenFileName(this, "The file will be checked",QString(),"Link(*.l);;All Files(*.*)");

25、QString的截取:string.mid(start_index,lenth),第一个参数开始位置,第二个参数截取长度。

26、QString、QByteArray、std::string之间的差别:

QString与QByteArray之间的编码不一样,前者默认的是以unicode的字符串,后者是存取的数据,
string不说明编码输出汉字则会出现乱码。两者之间的转化网上都有,如果不转化,后者无法输出汉						 
字,是以十六进制来保存的。比如:
QByteArray byte("罗斯");QString str("罗斯");
byte那边就会变为6个字节,
qDebug之后为"\xE7\xBD\x97\xE6\x96\xAF","罗斯";直接转到QString就可以输出中文了。
前者在内部自动转化输出,两者都可以保存'\0',lenth函数不会到'\0'结束。
两者以"\xxx"来保存数据,是以八进制来保存的,比如:
QByteArray byte("\034"),QString str("\034"),
两者的ASCII码值是28,八进制是34,十六进制为1c,都是一个字节,前者输出“\x1C”,后者输出
“\u001C”。
但是如果是第三者不存在这个情况,遇到\0就会停	止。第二个如果是以八进制来保存的
可以使用toHex来输出十六进制。
1中的字符类型是QChar,2是char类型的,3是size_t(int 型转换成十六进制的是跟QByteArray中一样).

27、QLineEdit中的提示语句(在填写之前编辑框中有提示语句,写入之后就消失),使用setPlaceholderText函数,qLineEdit->setPlaceholderText(“提示”);

28、正则表达式:setValidator、setToolTip(鼠标悬停在文本框上会有提示)

QRegExpValidator validator = new QRegExpValidator(QRegExp("[0-9a-fA-F]{4}"), this);
ui->editLine->setValidator(validator);
ui->editLine->setToolTip("Attribute=HEX, Length= [4, 4]");

29、在拿到路径的情况下,得到文件名:

QFileInfo infoPathName = QFileInfo(strPathName);
QString strFileName = infoPathName .fileName();

30、QListView的使用(添加行,删除行,遍历数据)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值