Qt學習總結-ui篇


控件設置透明度:

  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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM