控件設置透明度:
QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect(this); effect->setOpacity(0.9); //設置透明度 ui->widget->setGraphicsEffect(effect); //加在需要設置透明的控件上
控件設置圓角邊框:
//通過控件的樣式表即可實現
ui->widget->setStyleSheet(“border-radius:3px;”);
創建托盤圖標:
//加在ico圖標 QIcon icon = QIcon(“:/icofire.ico”); setWindowIcon(icon); //創建 trayIcon = new QSystemTrayIcon(this); trayIcon=new QSystemTrayIcon(this); //關聯曹函數,用於捕捉圖標點擊事件 connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(activated (QSystemTrayIcon::ActivationReason))); trayIcon->setIcon(icon); //設置上下文菜單 //trayIcon->setContextMenu(this->trayIconMenu); trayIcon->show();
窗口設置為無邊框:
this->setWindowFlags(Qt::FramelessWindowHint);
控件重疊,即實現控件“浮動效果”:
在界面存在布局的情況下,是無法將連個控件重疊在一起的,如果我們要實現界面中一部分控件“浮動”其他控件上的效果,可以通過棧布局的方式來實現。然而在默認情況下,棧布局同時只能顯示一幀畫面,要做到棧布局中所有控件同時顯示,要用到一下代碼:
QStackedLayout*laylout=(QStackedLayout*)ui->stackedWidget->layout();
laylout->setStackingMode(QStackedLayout::StackAll);
QLabel標簽添加點擊事件:
QLabel沒有特定的信號槽來讓我們處理點擊事件,需要通過一下方法:
為標簽綁定點擊事件的監聽函數
ui->label ->installEventFilter(this); 重寫窗體類的eventFilter()函數 bool MainForm::eventFilter(QObject *obj, QEvent *event){ if(obj==ui->label){ //過濾出單擊事件 if (event->type() == QEvent::MouseButtonPress) { //處理函數 return true; } } //其他判斷… return QWidget::eventFilter(obj,event); }
注意,處理完點擊事件后,如果 return true,這終止事件處理,反之消息將繼續傳播下去。
QLabel 同時顯示文字和圖片:
QLabel 在QDisginer編輯時可以通過屬性窗口設置圖片和文字,但最終程序運行時是不會同時顯示的,即這兩個屬性會相互覆蓋,只顯示其一。為達到圖文同時顯示,可通過重載QLabel的 paintEvent()函數來實現,若我們在屬性中設置好了圖片,需顯示額文字,可通過以下方法:
void QCustLabel::paintEvent(QPaintEvent *event){ //先按默認防止進行標簽繪制 QLabel::paintEvent(event); QPainter painter(this); //設置文字顏色 painter.setPen(Qt::white); //要顯示的可以作為一個成員變量 QString info=this->desInfo; //設置文字信息的x坐標和y坐標 //此處用了水平居中和垂直居中 int x=this->width()/2-(this->fontMetrics().width(info)/2); int y=this->height()/2+(this->fontMetrics().height()/2); //繪出文字 painter.drawText(QPoint(x,y),info); }
此方法中用到了 Qt的二維繪圖類 QPainter,此處使用的方法還是比較簡單的,關於QPainter使用總結,會在接下來的文章中給出。
由此,我們可以在label中隨意指定文字、圖片的顯示方式。
QTableView的簡單使用方法:
對於QTableView的內容修改,如設置表頭、添加單元格內容,可不不直接操作該控件,操作控件的 model 即可。
tableModel=new QStandardItemModel; //設置列數 tableModel->setColumnCount(3); tableModel->setHeaderData(0,Qt::Horizontal,tr(“colum 0″)); tableModel->setHeaderData(1,Qt::Horizontal,tr(“colum 1″)); tableModel->setHeaderData(2,Qt::Horizontal,tr(“colum 2″)); //為QTableView添加model ui->tableView->setModel(tableModel); 為QTableView添加行: //清除所有行 //tableModel->removeRows(0,tableModel->rowCount()); for(int i=0;i<XXX;i++){ tableModel->setItem(i,0,new QStandardItem(“xxx”)); tableModel->setItem(i,1,new QStandardItem(“xxx”)); tableModel->setItem(i,2,new QStandardItem(“xxx”)); } //表格控件根據內容自動調整寬度和高度 ui->tableView->resizeColumnsToContents(); ui->tableView->resizeRowsToContents();
