void MyplayerWidget::slot_open_pBtn_clicked() { QStringList fileNames = QFileDialog::getOpenFileNames(this,"获取音视频文件", "./", "*.jpg *.mp3 *.mp4 *.avi"); // m_MfileNameAndFilePath.clear(); for(int i = 0;i < fileNames.count();i++) { QStringList strSplitList = fileNames.at(i).split("/"); QString str; for(int j = 0;j < strSplitList.count();j++) { str = strSplitList.at(strSplitList.count()-1); } m_MfileNameAndFilePath.insert(str,fileNames.at(i)); QListWidgetItem *item = new QListWidgetItem(str); item->setSizeHint(ITEM_SIZE); ui->listWidget->insertItem(i,item); } }如何修改让代码变成根据鼠标选择删除
时间: 2023-06-12 16:05:29 浏览: 87
你可以修改代码如下:
```
void MyplayerWidget::slot_delete_selected_clicked()
{
QList<QListWidgetItem*> selectedItems = ui->listWidget->selectedItems();
for(int i = 0; i < selectedItems.count(); i++)
{
QListWidgetItem *selectedItem = selectedItems.at(i);
QString fileName = selectedItem->text();
m_MfileNameAndFilePath.remove(fileName);
delete selectedItem;
}
}
```
这里我们使用了 `QListWidget::selectedItems()` 方法获取当前列表中被选中的所有项,并使用 `QListWidgetItem::text()` 方法获取选中项的文本(即文件名),然后从 `m_MfileNameAndFilePath` 中移除该文件名,并使用 `delete` 关键字删除选中项。
相关问题
void MyplayerWidget::slot_open_pBtn_clicked() { QStringList fileNames = QFileDialog::getOpenFileNames(this,"获取音视频文件", "./", "*.jpg *.mp3 *.mp4 *.avi"); // m_MfileNameAndFilePath.clear(); for(int i = 0;i < fileNames.count();i++) { QStringList strSplitList = fileNames.at(i).split("/"); QString str; for(int j = 0;j < strSplitList.count();j++) { str = strSplitList.at(strSplitList.count()-1); } m_MfileNameAndFilePath.insert(str,fileNames.at(i)); QListWidgetItem *item = new QListWidgetItem(str); item->setSizeHint(ITEM_SIZE); ui->listWidget->insertItem(i,item); } }
这是一个 Qt 程序的槽函数,用于处理点击打开文件按钮的事件。该函数会弹出一个文件对话框,让用户选择一个或多个文件。选择的文件类型必须是 jpg、mp3、mp4 或 avi。选择的文件路径会被保存在 m_MfileNameAndFilePath 中,同时在列表控件中添加一个新的列表项,显示文件名。其中,ITEM_SIZE 是一个常量,表示列表项的大小。
纠正以下arduino代码的错误 #define InBtnPin 3 #define OutDPin 13 class Button { public: //成员函数 Button(int pbtn,int dpin):buttonpin(pbtn),diodepin(dpin)(); ~Button(void)() void Fun(int buttonpin,int diodepin); int buttonpin; int diodepin; }; void Bu
下面是已修正的代码:
```
#define InBtnPin 3
#define OutDPin 13
class Button {
public:
//构造函数
Button(int pbtn, int dpin): buttonpin(pbtn), diodepin(dpin) {}
//析构函数
~Button(void) {}
//成员函数
void Fun();
int buttonpin;
int diodepin;
};
void Button::Fun() {
pinMode(buttonpin, INPUT);
pinMode(diodepin, OUTPUT);
digitalWrite(diodepin, HIGH);
if (digitalRead(buttonpin) == HIGH) {
digitalWrite(diodepin, LOW);
} else {
digitalWrite(diodepin, HIGH);
}
}
Button Bu(InBtnPin, OutDPin);
void setup() {
Serial.begin(9600);
}
void loop() {
Bu.Fun();
delay(100);
}
```
修正的地方如下:
1. 构造函数的定义中,应该是冒号,而不是分号,并且需要传入参数,所以应该是 `Button(int pbtn, int dpin): buttonpin(pbtn), diodepin(dpin) {}`。
2. 析构函数的定义中,不需要传入参数,并且也是冒号,所以应该是 `~Button(void) {}`。
3. 成员函数 `Fun()` 中,不需要传入参数,因为已经在构造函数中传入了。同时,应该在函数开头设置 pinMode(),并且在函数末尾调用 digitalWrite(),这样才能实现按下按钮时点亮 LED 灯的效果。
阅读全文