bool TemplatesManageWindow::qt_invoke( int _id, QUObject* _o ) { switch ( _id - staticMetaObject()->slotOffset() ) { case 0: onBtnAddTpl(); break; case 1: onBtnAddRule(); break; case 2: onBtnRemove(); break; case 3: onItemRenamed((QListViewItem*)static_QUType_ptr.get(_o+1),(int)static_QUType_int.get(_o+2),(const QString&)static_QUType_QString.get(_o+3)); break; case 4: onListViewDoubleClicked((QListViewItem*)static_QUType_ptr.get(_o+1),(const QPoint&)*((const QPoint*)static_QUType_ptr.get(_o+2)),(int)static_QUType_int.get(_o+3)); break; case 5: onListViewSelectionChanged((QListViewItem*)static_QUType_ptr.get(_o+1)); break; case 6: onRulePropertyWindowDestroyed(); break; case 7: onListViewClicked((QListViewItem*)static_QUType_ptr.get(_o+1)); break; default: return QWidget::qt_invoke( _id, _o ); } return TRUE; }
ImageFileDialog::ImageFileDialog(const QVariantList &old, QString imgpath, QWidget *parent) :QDialog(parent), sellist(new QListWidget()), flistview(new QListWidget()), treefile(new QTreeView()), statusBar(new QLabel(this)), okbtn(new QPushButton("确定",this)) { mWindow = (MainWindow*)parent; setWindowFlags(Qt::Widget | Qt::FramelessWindowHint); setModal(true); treefile->header()->setHidden(true); flistview->setProperty(DKEY_EXTMAP,extMap); /* 填弃上一次的数据 */ dirModel = new QFileSystemModel(this); fileModel = new QFileSystemModel(this); this->setFixedSize(1000,600); sellist->setSelectionMode(QAbstractItemView::ExtendedSelection); sellist->setAlternatingRowColors(true); flistview->setSelectionMode(QAbstractItemView::ExtendedSelection); flistview->setAlternatingRowColors(true); flistview->setIconSize(QSize(80,60)); sellist->setIconSize(QSize(80,60)); QMap<QString,QString> navigator; navigator[UP] = ":/icon/icons/go-up.png"; navigator[DOWN] = ":/icon/icons/go-down.png"; navigator[LEFT] = ":/icon/icons/go-previous.png"; navigator[RIGHT] = ":/icon/icons/go-next.png"; QVBoxLayout *mainLayout = new QVBoxLayout(); QHBoxLayout *mh = new QHBoxLayout(); this->setLayout(mainLayout); mainLayout->addLayout(mh); this->setWindowTitle(tr("图片编辑")); QVBoxLayout *v = new QVBoxLayout(); v->setSizeConstraint(QLayout::SetFixedSize); QMapIterator<QString,QString> itmap(navigator); while(itmap.hasNext()) { itmap.next(); QPushButton *btn = new QPushButton(); QPixmap p(itmap.value()); btn->setIconSize(p.size()); p.setMask(p.createMaskFromColor(Qt::white)); btn->setIcon(QIcon(p)); btn->setObjectName(itmap.key()); btn->setFixedSize(btn->iconSize()); v->addWidget(btn); if(!LEFT.compare(itmap.key())) { connect(btn,SIGNAL(clicked(bool)),SLOT(onAddSelectedItems())); }else if(!UP.compare(itmap.key())) { connect(btn,SIGNAL(clicked(bool)),SLOT(onUp())); }else if(!DOWN.compare(itmap.key())) { connect(btn,SIGNAL(clicked(bool)),SLOT(onDown())); }else if(!RIGHT.compare(itmap.key())) { connect(btn,SIGNAL(clicked(bool)),SLOT(onDelSelectedItems())); } } dirModel->setRootPath(imgpath); dirModel->removeColumn(3); dirModel->removeColumn(2); dirModel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs); filters << "*.bmp" << "*.png" << "*.jpg"; dirModel->setNameFilters(filters); treefile->setModel(dirModel); treefile->setRootIndex(dirModel->index(imgpath)); treefile->setAlternatingRowColors(true); treefile->hideColumn(3); treefile->hideColumn(2); treefile->hideColumn(1); fileModel->setRootPath(imgpath); fileModel->setNameFilters(filters); fileModel->setFilter(QDir::Files); connect(sellist,&QListWidget::clicked, [=](QModelIndex index){ sellist->clearSelection(); sellist->setCurrentIndex(index); findChild<QPushButton*>(UP)->setEnabled(index.row() == 0 ? false : true); findChild<QPushButton*>(DOWN)->setEnabled(index.row() == sellist->count() -1 ? false : true); }); connect(flistview,SIGNAL(doubleClicked(QModelIndex)), SLOT(onListViewDoubleClicked(QModelIndex))); connect(treefile,SIGNAL(clicked(QModelIndex)), SLOT(onTreeViewClicked(QModelIndex))); /* 主布局是水平布局,左(QListWidget),中(垂直布局),右(文件系统) */ mh->addWidget(sellist); mh->addLayout(v); mh->addWidget(flistview); mh->addWidget(treefile); QHBoxLayout *mlayout = new QHBoxLayout(); mlayout->setSizeConstraint(QLayout::SetMaximumSize); QLabel *msg = new QLabel("已经添加的图片数:"); statusBar->setText("0"); mlayout->addWidget(msg); mlayout->addWidget(statusBar); mlayout->addWidget(okbtn); statusBar->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed); mainLayout->addLayout(mlayout); foreach (QVariant v, old) { // example for v "config/images/digital-0.png" QString str = v.toString(); QString fpath = QDir::currentPath() + BACKSLASH + str; QPixmap pic = mWindow->mImgMap[fpath]; if(pic.isNull()) { pic = mWindow->mImgMap[fpath] = QPixmap(fpath); } QString sname = str.mid(str.lastIndexOf(BACKSLASH)+1); QListWidgetItem *nitem = new QListWidgetItem(pic,sname); sellist->addItem(nitem); selectedMap[sname] = fpath; }