Qt常用控件

/*头文件自加*/

设置桌面图标
将ico文件复制到工程文件夹的目录中,并随便命名,列myico.ico
并且在pro文件中添加RC_ICONS=myico.ico

窗口QWidget
QWidget的构造函数有两个:QWidget *parent=0和Qt::WindowFlags f=0
前面的parent值得是父窗口部件,默认为0,表示没有父窗口.
后面的f参数Qt::WindowFlags是Qt::WindowType枚举类型的集合,而这个集合是用来给各个部件指定窗口的系统属性
常用类型:
Qt::FramelessWindowHint;//产生一个没有边框的窗口
Qt::WindowStaysOnTopHint;//产生一个停留在其他窗口之上的窗口

其中QWidget中海油一个设置窗口状态的函数setWindowState
其参数是Qt::windowstate枚举类型的集合
常用参数
Qt::WindowMaximized;//窗口最大化
Qt::windowMinimized;//窗口最小化
Qt::WindowFullScreen;//全屏
Qt::windowActive;//活动窗口
Qt::windownostate;//正常状态


对话窗QDialog
模态就是说在没有关闭这个对话框之前,不能再与同一应用程序的其他窗口交互
通过setModel(true)实现
与其相似的还有另外一个函数setModality()函数,其参数是为
Qt::NonModal;//不阻塞其他窗口,非模态
Qt::WindowModal;//阻塞父窗口和子类窗口
Qt::ApplicationModal;//阻塞整个应用的所有窗口

标准对话框:
颜色对话框:QColor color=QColorDialog::getColor(Qt::red,this,tr("颜色对话框"));


文件对话框 QString fileName=QFileDialog::getOpenFileName(
this,
tr("文件对话框"),
"../"                    //默认磁盘,可以写D:
,tr("images(* png *jpg);;test(*txt)"));

字体对话框bool ok;QFont fobt=QFontDialog::getFont(&ok,this);
输入对话框:
    QString string=QInputDialog::getText(this,tr("输入字符串对话框"),tr("请输入用户名"),QLineEdit::Normal,tr("admin"),&ok);
    int value=QInputDialog::getInt(this,tr("整数对话框"),tr("请输入0,100之间的数值"),100,0,100,10,&ok);
*消息对话框:
问题对话框:
int rel=QMessageBox::question(this,tr("标题"),tr(内容),QMessageBox::Yes,QMessageBox::No);
提示对话框:
int rel=QMessageBox::information(this,tr(标题),tr(内容,QMessageBox::Ok));
警告对话框:
int rel =QMessageBox::warning(this,tr(标题),tr(内容),QMessageBox::Abort);
错误对话框:
int rel =QMessageBox::critical(this,tr(标题),tr(内容),QMessageBox::YesAll);
关于对话框
int rel=QMessageBox::about(this,tr(标题),tr(内容));

进度条对话框
QProcessDialog dialog(tr(内容),tr(取消),0,100,this);
dialog.setvalue(rel);

错误信息对话框:
QErrorMessage *errodlg=newQErrorDialog(this);
errordlg.setWindowTitle('');
errordlg.showMessage('');

向导对话框
QWizardPage *page1=new QWizardPage;
QWizardPage *page2=new QWizardPage;
QWizardPage *page3=new QWizardPage;
QWizard w(this);
w.addPage(page1);
w.addPage(page2);
w.addPage(page3);


QFrame类是带有边框的部件的基类
setFrameShape:
    QFrame::NoFrame;//不进行绘制
    QFrame::Box;//在它的内容四周绘制一个边框
    QFrame::Panel;//绘制一个面板,使得内容表现凹凸
    QFrame::StyledPanel;//绘制一个矩形面板,它的效果依赖于当前的GUI样式,可凹凸
    QFrame::HLine;//绘制一个水平线,没有任何框架
    QFrame::VLine;//绘制一条垂线
    QFrame::WinPanel;//绘制一个类似于windows2000中的矩形面板,可凹凸
setFrameShadow
    QFrame::Plain;//边框和内容没有3D效果,与四周都在一个水平线上
    QFrame::Raised;//内容凸起
    QFrame::Sunken;//凹陷

QLabel用来显示文本和图片

QLineEdit:

定时器的使用
 QTimer *timer =new QTimer(this);
timer.start(1000);
connect(timer,&Timer::timeout,this,&funcself);
void funcself()
{
//定时器每动一次就会启动这个函数
}


==================================
使程序没有图标
调用QWidget的setWindowFlags()函数。 设置为Qt::Tool、Qt::SubWindow、
Qt::Popup可以达到目的。

但是这样做会有副作用:
设置Qt::Popup不能设置保持窗口在顶层和底层。
设置Qt::SubWindow的窗口没有标题栏,没有关闭按钮,也不能进行拉伸。这些功能需要自己实现。
设置Qt::Tool窗口可以拉伸也有关闭按钮,但是点击关闭按钮,程序并不退出。
=========================================
QPushButton b;
setText("'')//设置内容
setParent(&w);//设置父对象
move(0,0);//设置位置

=============================================
//播放音乐
pro里面先添加QT+=multimedia 

  QMediaPlayer *p=new QMediaPlayer;
    p->setMedia(QUrl::fromLocalFile("E:\\source\\reason.mp3"));
    p->play();
    p->pause();
    p->stop();
//播放视频
pro加上QT+=multimediawidgets
QMediaPlayer *p=new QMediaPlayer;
     QVideoWidget *vi=new QVideoWidget(this);
     vi->resize(300,300);
     p->setVideoOutput(vi);
    p->setPosition(1*1000);//设置播放位置
    p->setMedia(QUrl::fromLocalFile("E:\\source\\cxk.wmv"));
    p->play();
//播放gif
QMovie *m=new QMovie();
QLabel l(this);
l.resize(100,100);
l.setMovie(m);
m.start();

QLineEdit ed:行编辑
setText("text")//设置内容
text();//获取内容
setEchoMode();//设置显示文本的方式
        QLineEdit::Normal;//按照输入的内容显示
        QLineEdit::NoEcho;//不显示任何内容,此模式下无法查看用户的输入
        QLineEdit::password;//密码模式
QStringList li;
li.append("ss");
QCompleter *com=new QCompleter(li,this);
ed.setCompleter(com);//设置输入提示
===================================================
QTextEdit:文本框    与之相对的plainTextEdit区别在不能显示图片    
===================================
QLabel label:显示文字图片动画(gif)网址

label.setText("123");//设置文字

l.setPixmap(QPixmap("path"));//设置图片
 l.setScaledContents(true);//设置图片自适应

设置动画
QMoive *movie=new QMovie("path");
l.setMovie(movie);
movie->start();

设置html
l.setText("<a href="baidu.com"/>");//如果希望点击链接会发生跳转需要加:
l.setOpenExternalLinks(true);
=========================================
QLcdNumber lcd;//数码管
lcd.display(21f),只能显示16进制
==================================
QProcessBar q;//进度条
q.setMInimum(0);//最小值
q.setMaximum(100);//最大值
q.setValue(2);//当前值
========================================
QWebView web;//显示网页并且需要再pro问价中加上QT+=webkitwidgets
web.load(QUrl("http://www.baidu.com"));
=========================================
============================================
Qt透明效果
方法1
 通过设置窗体的背景色来实现,将背景色设置为全透。
QPalette pal = palette(); 
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); 
setPalette(pal);
方法二
setAttribute(Qt::WA_TranslucentBackground, true);
   试验的结果是类似于上面的方法,但有时候窗体会被一些杂色斑点填充,未找到原因。

方法三
窗口及其上面的控件都半透明:
setWindowOpacity(0.7)
试验效果:窗口及控件都半透明。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值