ورود

View Full Version : مبتدی: انتقال آیتمهای یه ویجت لیست به ویجت لیست دیگر



Amir-Shabani
یک شنبه 01 مرداد 1391, 16:51 عصر
سلام. نماز روزه های همه قبول.....

دو تا لیست ویجت دارم میخوام با چهار تا دکمه. میخوام با کلیک روی دو تا از دکمه ها ایتمهای ویجت چپ به راست منتقل بشه یکیشون آیتم انتخاب شده ازویجت چپ رو منتقل میکنه یکیشون همه آیتمها رو....

دو تا دکمه دیگه همین کار فقط از راست به چپ....

امانم رو بریده! هر چی گشتم، ویدئو دیدم.... مطلب خوندم نشد که نشد! از اسلات و روشهای دیگه هم استفاده کردم!

alamate_aoal
دوشنبه 02 مرداد 1391, 09:03 صبح
سلام


فرض میکنیم شما دو عدد دکمه به نام های btnToRight و btnAllToRight و دو لیست ویجت به نام های listLeft و listRight دارید
در اینصورت اسلات کلیک شدن btnToRight که قرار برخی مقادیر موجود در لیست چپ را به لیست راست منتقل کنه چیزی شبیه به این میشه:

void MainWindow::on_btnToRight_clicked()
{
QList<QListWidgetItem *> _selectedItems = ui->listLeft->selectedItems();

const int countSelectedItems = _selectedItems.size();
if( !countSelectedItems ) { qApp->beep(); return ; }

register int i=0;
for( ; i<countSelectedItems; ++i) {
QListWidgetItem *item = _selectedItems.at(i);
ui->listRight->addItem( item->clone() );
delete item;
}
}


و برای btnAllToRight هم میتونی اینو بنویسی:

void MainWindow::on_btnAllToRight_clicked()
{
ui->listLeft->selectAll();
on_btnToRight_clicked();
}

برای انتقال از لیست راست به چپ هم باید یه تغییرات خیلی کوچیکی روی دو اسلات فوق بدی(کار در منزل:لبخند:)

ضمیمه:
اگه میخوای لیست هات قابلیت درگ&دراپ داشته باشند این کدها رو در سازنده بنویس:

ui->listLeft->setDragEnabled(true);
ui->listLeft->setDragDropMode(QAbstractItemView::DragDrop);
ui->listLeft->setDefaultDropAction(Qt::MoveAction);
ui->listLeft->setSelectionMode(QAbstractItemView::MultiSelection );

ui->listRight->setDragEnabled(true);
ui->listRight->setDragDropMode(QAbstractItemView::DragDrop);
ui->listRight->setDefaultDropAction(Qt::MoveAction);
ui->listRight->setSelectionMode(QAbstractItemView::MultiSelection );