1. 程式人生 > >qt中控件的使用函數

qt中控件的使用函數

icon signal 列表 jpg 界面 全部 filename lB --

1、Text Edit編輯框

//將編輯框中的內容轉化成Utf8編碼
ui->textEdit->toPlainText().toUtf8(); 

2、Combo Box下拉框的應用

(1)將內容加入下拉框中

ui->comboBox->addItem(ui->recvMulAddrEdit->text());

(2)刪除下拉框中當前的內容

 ui->comboBox->removeItem(ui->recvMulAddr->currentIndex()); 

3、List Wiget

(1)實現雙擊

void QPlayer::on_listWidget_doubleClicked(const
QModelIndex &index)//雙擊進入 { //"mplayer -slave -quiet -geometry x:y -zoom -x x -y y move.mp4" //http://192.168.1.248/move.mp4 QString movepath = path+ui->listWidget->currentItem()->text(); //ui->listWidget->currentItem()->text() 取出當前光標雙擊的一行內容 QString cmd = QString("mplayer -slave -quiet -geometry %1:%2 -zoom -x %3 -y %4 %5
") .arg(QString::number(ui->label->x())) .arg(QString::number(ui->label->y())) .arg(QString::number(ui->label->width())) .arg(QString::number(ui->label->height())) .arg(movepath); if(mProcess->state() == QProcess::Running) { mProcess
->kill(); mProcess->waitForFinished(); }else { mProcess->start(cmd); } }

(2)獲取當前點擊內容的行號

int num = ui->listWidget->row(ui->listWidget->currentItem()); 

(3)建立文件縮小圖標

QListWidgetItem *item = new QListWidgetItem(QIcon(fileDir),info.fileName());
ui->ListWidget->addItem(item); //往List Wiget裏面添加項

(4)在List Widget列表中顯示其他窗口信息

  Form *win = new Form(ui->listWidget); //這是一個子窗口,ui->listWidget把窗口對象放進ListWidget列表中
  QListWidgetItem *item = new QListWidgetItem();
  item->setSizeHint(win->size()); //每項的大小設置為win的大小
  ui->listWidget->addItem(item);
  ui->listWidget->setItemWidget(item,win); //

4、Label

(1)顯示圖片

第一種方法:

ui->label->setScaledContents(true);//顯示圖片的全部
ui->label->setPixmap(QPixmap(tempDir));//顯示圖片,tempDir是照片的絕對路徑

第二種方法:

QPixmap mmp;
mmp.load("E:/GZ17-3/system/Qt-program/001/code/LoginWin/tst.png"); 
mmp = mmp.scaled(ui->label->size());
ui->label->setPixmap(mmp);

(2)播放視頻,播放器是mplaer

void ProcessMplayer::on_listWidget_doubleClicked(const QModelIndex &index) //雙擊播放視頻
{
    qDebug()<<ui->listWidget->currentItem()->text();
    QString cmd = "E:/GZ17-3/system/Qt-program/mplayer/mplayer.exe";
    //cmd.append(ui->listWidget->currentItem()->text());

    QStringList  argmList;
    argmList<<"-slave"; //從模式--通過命令控制
    argmList<<"-quiet"; //屏蔽解碼信息輸出
    argmList<<"-wid";//嵌入到界面上,後面接窗口ID
    argmList<<QString::number(ui->label->winId());
    argmList<<ui->listWidget->currentItem()->text();

    if(mProcess->state() == QProcess::Running)
    {
        mProcess->kill();
        mProcess->waitForFinished();
    }
    mProcess->start(cmd, argmList);
}

(3)播放gif動態圖

 QMovie *movie = new QMovie("../form/1.gif");  // "../form/1.gif"圖片路徑
 movie->start(); //開始播放動態圖
 ui->label->setMovie(movie); //將圖片設置為為動態
 ui->label->setScaledContents(true); //盡可能完整的播放整張動圖 ,此處要設置為true

(4)截屏

//截屏
QPixmap map = QApplication::screens().at(0)->grabWindow(0);
map.save("./screen.png"); //保存到當前目錄下,名字為screen.png
QBuffer buffer; //圖片暫時存儲器
buffer.open(QIODevice::WriteOnly);
map.save(&buffer);
buffer.data();//得到QByteArray 對象可以轉換為char*

//顯示
map = map.scaled(ui->label->size()); //圖片跟著屏幕的縮放
ui->label->setPixmap(map);

5、Check Box按鍵

ui->checkBox->setCheckState(Qt::Unchecked); //把按鈕重新置於沒有被選中的狀態

6、Push Button按鍵

(1)排列出一個鍵盤

  //鍵盤數組
    QToolButton *buttons[12];
  //按鈕初始化
    buttons[0] = ui->btn_value0;
    buttons[1] = ui->btn_value1;
    buttons[2] = ui->btn_value2;
    buttons[3] = ui->btn_value3;
    buttons[4] = ui->btn_value4;
    buttons[5] = ui->btn_value5;
    buttons[6] = ui->btn_value6;
    buttons[7] = ui->btn_value7;
    buttons[8] = ui->btn_value8;
    buttons[9] = ui->btn_value9;
    buttons[10] = ui->btn_Point;
    buttons[11] = ui->btn_delete;
 
 //所有按鈕信號關聯一個槽函數
    for(int i=0;i<12;i++)
    {
        connect(buttons[i],SIGNAL(clicked(bool)),this,SLOT(clicked_button()));
    }
    
//點擊哪個按鈕
void ArmInfo::clicked_button()
{
    //獲取是哪個按鈕點擊(信號發送者)
    QToolButton *obj = (QToolButton*)sender();
    QString ip = ui->lineEdit_Amend->text();
    if(obj->text() == "<-") //檢測是否點擊刪除按鈕
    {
      ip.remove(ip.length()-1,1);//刪除最後一個字符
    }

    else
    {
       ip.append(obj->text());//拼接字符串
    }
    ui->lineEdit_Amend->setText(ip);
}

(2)設置按鈕狀態

ui->pushButton->setCheckable(true); //按一次就改變一次狀態,比如說第一次按下時true那麽第二次就是false
connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(check(bool)));

(3)按鈕按下和釋放時切換圖片

void MainWindow::on_pushButton_pressed() //按下按鈕時
{
    ui->pushButton->setStyleSheet("border-image: url(:/new/prefix1/imag/人體炮彈.png);");
}

void MainWindow::on_pushButton_released() //釋放按鈕時
{
    ui->pushButton->setStyleSheet("border-image: url(:/new/prefix1/imag/atm.png);");
}

7、Line Edit輸入框

 //垂直布局管理器
 QVBoxLayout *vbox = new QVBoxLayout(this);
 lineEdit = new QLineEdit(this); //定義一個lineEdit對象
 lineEdit->setMinimumHeight(60); //設置最小高度
 lineEdit->setAlignment(Qt::AlignRight); //設置輸入框中右邊對齊 

8、toolButton

(1)設置按鈕的大小

//90為x軸,100為y軸,300為寬,400為高設置界面的大小
ui->toolButton->setGeometry(90,100,300,400); 

(2)設置圖標

 //設置圖標,../toolbar/icon.jpg 這是圖片所在路徑,要在源程序目錄下
 ui->toolButton->setIcon(QIcon("../toolbar/icon.jpg"));
 解釋:toolbar代碼的路徑,不是絕對路徑 

9、action按鈕綁定方法

connect(ui->action_New,SIGNAL(triggered(bool)),this,SLOT(doProcessNew())); //action按鈕的綁定方法,這裏和pushButton不同的時候觸發為triggered(bool)

10、鎖定背景圖片,不讓其他按鈕隨著背景圖片一起變化

MainWindow{border-image: url(:/new/prefix1/imag/00958PICfNK.jpg);}
解釋:MainWindow :顯示背景的窗口名
      border-image:圖片跟著邊框一起變化
      /new/prefix1/imag/00958PICfNK.jpg:圖片路徑   

qt中控件的使用函數