feisky

云计算、虚拟化与Linux技术笔记
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

窗口部件QWidget

Posted on 2010-04-08 15:42  feisky  阅读(1436)  评论(0编辑  收藏  举报

 

Qt设计器 designer &提供以下四种GUI窗口部件编辑模式 :
        Widget模式:修改GUI部件以及修改其属性外观
        信号和槽编辑模式
        Tab编辑模式
        伙伴模式:只有QLabel才有Buddy,只有QLabel才有快捷键

QWidget类是所有用户界面对象的基类。
窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。

QDialog是最普通的顶级窗口。不被嵌入到一个父窗口部件的窗口部件被叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管如果使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和和不同的QDialog的子类是最普通的顶级窗口。

一个没有父窗口部件的窗口部件一直是顶级窗口部件。

非顶级窗口部件是子窗口部件。它们是它们的父窗口部件中的子窗口。你通常不能在视觉角度从它们的父窗口部件中辨别一个子窗口部件。在Qt中的绝大多数其它窗口部件仅仅作为子窗口部件才是有用的。(当然把一个按钮作为或者叫做顶级窗口部件也是可能的,但绝大多数人喜欢把他们的按钮放到其它按钮当中,比如QDialog。)

QWidget有很多成员函数,但是它们中的一些有少量的直接功能:例如,QWidget有一个字体属性,但是它自己从来不用。有很多继承它的子类提供了实际的功能,比如QPushButton、QListBox和QTabDialog等等。

查找文件

void Widget::on_FindFileBtn_clicked()
{
    bool ok;
    QString text=QInputDialog::getText(this,tr("文件名"),tr("请输入你要查找的文件名"),QLineEdit::Normal,
                                      tr("*"), &ok);
    QString path=QFileDialog::getExistingDirectory(this,
                                                  tr("查找路径"),
                                                  QDir::currentPath(),
                                                  QFileDialog::ShowDirsOnly);
    if(ok && !text.isEmpty() && !path.isEmpty())
    {
        QDir dir=QDir(path);
        QStringList files=dir.entryList(QStringList(text),QDir::Files|QDir::NoSymLinks);
        for(int i=0;i<files.size();i++)
        {
            QString strFilePath=dir.absoluteFilePath(files[i]);
            QFile file(strFilePath);
            QFileInfo fileInfo(file);
            qint64 size=fileInfo.size();
            QDateTime time=fileInfo.created();
            QTableWidgetItem *fileNameItem=new QTableWidgetItem(strFilePath);
            fileNameItem->setFlags(Qt::ItemIsEnabled);
            QTableWidgetItem *sizeItem=new QTableWidgetItem(tr("%1 KB").arg(int((size+1023)/1024)));
            sizeItem->setFlags(Qt::ItemIsEnabled);
            QTableWidgetItem *timeItem=new QTableWidgetItem(time.toString(tr("yyyy-MM-dd hh:mm")));
            timeItem->setFlags(Qt::ItemIsEnabled);
            int row=ui->tableWidget->rowCount();
            ui->tableWidget->insertRow(row);
            ui->tableWidget->setItem(row,0,fileNameItem);
            ui->tableWidget->setItem(row,1,sizeItem);
            ui->tableWidget->setItem(row,2,timeItem);
        }
    }
}

无觅相关文章插件,快速提升流量