检测是否在QlistWidget的某一行上单击了某项
Detecting if an item is clicked at at some row in a QlistWidget
我接到了这个简单的任务,
我有这个列表,我插入项目每当ok被点击,void Form::ok()处理该事件应该添加新的列表项目到列表。
现在我不能做的是检测如果一个项目在某一行被点击,然后根据它做一些事情,这是我的代码..
#include "form1.h"
#include "form.h"
#include "ui_form.h"
#include "ui_form1.h"
#include<QScrollArea>
#include<QScrollBar>
//#include <QgeoPositioninfo.h>
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
}
Form::~Form()
{
delete ui;
}
void Form::ok()
{
QIcon mypix (":/karim/test.png");
QListWidgetItem* newItem = new QListWidgetItem;
newItem->setText("pixmix");
newItem->setIcon(mypix);
int row = ui->listWidget->row(ui->listWidget->currentItem());
this->ui->listWidget->insertItem(row, newItem);
//if(item at row x is clicked)
{
//do something
}
}
请在你的答案中具体,我会感谢
如下:
connect(ui->listWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(itemClickedSlot(QListWidgetItem *)));
void Form::itemClickedSlot (QListWidgetItem * itemClicked)
{
//Do something with clicked item
}
QListWidgetItem将其文本存储为QString,因此如果您想要操作它,可能需要将其强制转换为其他内容。QListWidgetItem本身没有关于它的位置的信息,但是QListWidget有。
如果您查看信号下的QListWidget的文档,您可以看到有几个不同的状态可以在其中执行函数。我个人使用currentItemChanged
http://qt project.org/doc/qt - 4.8 -/- qlistwidget.html #信号
更新构造函数,包括连接listWidget到myFunc:
Form::Form(QWidget *parent) : QWidget(parent), ui(new Ui::Form) {
ui->setupUi(this);
connect(ui->listWidget,
SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), this,
SLOT(myFunc(QListWidgetItem *)));
}
并将此函数添加到您的类中:
void Form::myFunc(QListWidget *item) {
int currentRow = ui->listWidget->currentRow();
std::cout << (item->text()).toStdString() << std::endl;
}
这将使您获得QListWidgetItem在列表及其文本中的当前位置。使用item->,你可以改变它的文本和其他一些东西:
http://qt project.org/doc/qt - 4.8 -/- qlistwidgetitem.html
快乐编码。
您需要将itemClicked(QListWidgetItem * item)信号连接到某个插槽,以处理对项目的单击。
相关文章:
- QTreeView幻灯片多选后无法使用单击选择
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- QML TableView 使用 QtQuick.Controls 2 单击行
- ImGui 在单击按钮后冻结
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 我想使用此代码单击某个特定窗口,但它无法正常工作
- 如何在QSplashScreen中禁用鼠标单击
- 单击一个按钮后创建一个按钮
- C++鼠标单击时的屏幕截图不起作用
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 标签检测鼠标单击 c++
- 如何将我的程序添加到文件和文件夹的macOS右键单击菜单?
- 使用 SFML 在矩形的矢量中查找鼠标单击量
- 在单击 QPushButton 时调用带有参数的函数
- 如何在单击按钮FLTK的确切时刻获得小部件的值
- 如何使用鼠标单击选择多个 QLabel 对象?
- WM_PAINT基于按钮单击
- 在使用 c++ 的 win32 api 中,我想跟踪双击和三次单击等
- 如何获得鼠标光标连接时按下左键单击和在C++中释放左键单击时?
- 检测是否在QlistWidget的某一行上单击了某项