QT5基础操作(一)
生活随笔
收集整理的這篇文章主要介紹了
QT5基础操作(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??說明:代碼框上面是對操作描述,代碼框內部具體操作
運行時界面字體顯示不全(分辨率問題)
//解決辦法:在主函數(main.cpp)的QApplication a(argc,argv)前加入一行: QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);代碼方式建立組件
在.h文件中private 聲明指針,在.cpp文件中new實例化對象,后可在cpp中以指針方式使用代碼方式進行組件布局(其實這步可以在qt designer中完成)
1.定義QGridLayout/水平/豎直對象a 2.a->addWidget(部件名,0,0) //添加組件,后面是對應組件x,y坐標,都從0開始QTextEdit設置文字存儲格式
QTextEdit *textLeft = new QTextEdit();textLeft->setAlignment(Qt::AlignCenter);/** setAlignment為設置中文字對齊方式* 包括AlignLeft 左對齊* AlignRight 右對齊* AlignCenter 中心對齊* AlignUp 文字與頂部對齊* AlignBottom 文字與底部對齊*/窗口顯示拖拽條
QSplitter *splitterRight = new QSplitter();splitterRight->setOpaqueResize(false); //用于顯示拖拽條,flase不顯示,true顯示設置當前窗口標題(其實不加tr,直接雙引號也可以。A是當前界面的對象名)
A->setWindowTitle(tr("Splitter"));顯示當前窗口(A是當前界面的對象名)
A->show();關閉當前窗口(A是當前界面的對象名,如果是在自己的CPP文件內使用可以用this)
A->close();;設置可移動窗口
QDockWidget *dock = new QDockWidget(tr("DockWindow1"), this);//可移動dock->setFeatures(QDockWidget ::DockWidgetMovable);dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);將Label設置成鑲嵌類型
OtherLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);//設置控件的風格,鑲嵌陰影型引用圖像作為控件(比如照片)
HeadIconLabel = new QLabel;QPixmap icon("123.jpg");//引用圖像時可放置于build目錄下HeadIconLabel->setPixmap(icon);代碼調整控件大小(a為任意控件對象)
a->resize(x,y);如果需要顯示抽屜效果,每層抽屜又分N個按鍵(例如QQ聊天列表)
QToolBoxQToolButton中setToolButtonStyle各個參數設置
/** setToolButtonStyle用來設置圖標和文字的位置* 包括:* ToolButtonIconOnly 只顯示圖標* ToolButtonTextOnly 只顯示文字* ToolButtonTextBesidesIcon 文字在圖標旁邊* ToolButtonTextUnderIcon 文字在圖標下面*/toolBtn1_1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);設計進度框(像windows下刪除大文件下進度條)
QProgressDialog設置窗口置頂(A為界面對象名)
A->setWindowFlags(Qt::FramelessWindowHint);設置窗口透明度(A為界面對象名)
//設置透明度為0.5 A->setWindowOpacity(0.5);鼠標移動事件
//調用時鼠標移動使用的應該是->buttons()而不是->button //以下兩個函授完成時鐘隨著鼠標移動的功能 void DigiClock::mousePressEvent(QMouseEvent *event) {if (event->buttons() == Qt::LeftButton){//以左上角為標準計算拖動距離//globalPos代表全局坐標,以整個屏幕為界面顯示dragPosition = event->globalPos()-frameGeometry().topLeft();event->accept();}if (event->buttons() == Qt::RightButton){close();} }void DigiClock::mouseMoveEvent(QMouseEvent *event) {if (event->buttons() & Qt::LeftButton){move(event->globalPos()-dragPosition);event->accept();} }按鍵:按下去變色,松開后恢復(使用QTime實現)
//(注意:基本思想是修改樣式表的背景,所以要保證前后字體大小統一。樣式表的話推薦選擇border-image,background的圖案會顯示不全)this->ui->P_back->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 14pt 楷體;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->close();this->ui->P_back->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 14pt 楷體;}");讀取TXT文件內的數據
int i = 1;QFile file("xxx.txt"); //文件路徑,最好是絕對路徑if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug()<<"Can't open the file!";return;}QTextStream in(&file); //文件流QString line = in.readLine() ; //讀取一行while (!line.isNull()){line = in.readLine();a[i] = line.toFloat();i = i+1;}當前時鐘,動態變化
//主函數QTimer *timer = new QTimer();connect(timer,SIGNAL(timeout()),this,SLOT(showtime_1()));timer->start(1000);//1s改變一次//槽函數showtime_1QDateTime *datatime = new QDateTime(QDateTime::currentDateTime());QString str = datatime->toString("yyyy-MM-dd hh:mm:ss ddd");ui->D_time->setText(str);總結
以上是生活随笔為你收集整理的QT5基础操作(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: caffe报错:Check failed
- 下一篇: C/C++: OpenSSL实现http