直接上代码吧
class myFileSelect :public QFileDialog
{
Q_OBJECT
public:
explicit myFileSelect(QWidget *parent = 0)
:QFileDialog(parent)
{
this->setOption(QFileDialog::DontUseNativeDialog,true);//设置不使用本机默认的
this->setWindowFlags(Qt::Dialog | Qt::WindowStaysOnTopHint);
QListView *listView=this->findChild<QListView *>("listView");//文件对话框就是左边一个treeview右边一个listview
if(listView){
listView->setSelectionMode(QAbstractItemView::ExtendedSelection);
}
QTreeView *treeView =this->findChild<QTreeView *>();
if(treeView){
treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
}
QDialogButtonBox *button =this->findChild<QDialogButtonBox*>("buttonBox");
disconnect(button,&QDialogButtonBox::accepted,this,&myFileSelect::accept);//这里accept是QFiledialog里protected,只能在类内访问
connect(button,&QDialogButtonBox::accepted,this,&myFileSelect::go);
}
signals:
public slots:
void go(){
QDialog::accept();
}
};
我图方便就直接把声明和定义写一起了。
我是新手,不太懂,试了其他人的都不太行,StackOverflow那条也不行,就把他们的结合到一起,我这台电脑上是可以了,就是样式有点丑,可以自己修改样式。原来QFileDialog::getOpenFileNames按住左键会出现一个框,现在没有了,但是功能还在,就和原来一样,按住左键拖动,就能批量选择文件,只不过框在你心里。