后续页面改下 listView 下面 在加上验证div,平时hide 查询需要验证的时,show 考虑 打招呼 也向上个div一样 还是, 直接添加到临时会话, 添加到好友列表内?
122 lines
3.8 KiB
C++
122 lines
3.8 KiB
C++
//
|
||
// Created by dongl on 23-6-1.
|
||
//
|
||
|
||
// You may need to build the project (run Qt uic code generator) to get "ui_addfrindwindow.h" resolved
|
||
|
||
#include <QStringListModel>
|
||
#include <QMenuBar>
|
||
#include "ui_addfrindwindow.h"
|
||
#include "addfrindwindow.h"
|
||
#include "ClientExample.h"
|
||
|
||
addfrindwindow::addfrindwindow(QWidget *parent) :
|
||
QWidget(parent),
|
||
ui(new Ui::addfrindwindow),
|
||
userOperation(new UserOperation(ClientExample::run())) {
|
||
ui->setupUi(this);
|
||
|
||
connect(ui->search, SIGNAL(returnPressed()), this, SLOT(get_search_input()));
|
||
}
|
||
|
||
addfrindwindow::~addfrindwindow() {
|
||
delete ui;
|
||
}
|
||
|
||
// add 搜索框
|
||
void addfrindwindow::get_search_input() {
|
||
// 取搜索框值
|
||
QString search_value = ui->search->text();
|
||
// 开始搜索 暂时只显示
|
||
|
||
auto ret = userOperation->fetch_user(strtol(search_value.toStdString().c_str(), nullptr, 0));
|
||
if (ret.has_value()) {
|
||
if (ret.value().m_sri.subcommand() == mp::MP_SUB_TYPE::MP_SEARCH_SUCCESS) {
|
||
search_value.append(" ");
|
||
search_value.append(ret.value().m_sri.username().c_str());
|
||
search_value.append(" ");
|
||
search_value.append(ret.value().m_sri.msg().c_str());
|
||
user_show_info = true;
|
||
user.account = ret.value().m_sri.account();
|
||
user.username = ret.value().m_sri.username();
|
||
user.email = ret.value().m_sri.email();
|
||
} else {
|
||
search_value.append(" ");
|
||
search_value.append(ret.value().m_sri.msg().c_str());
|
||
search_value.append(" ");
|
||
// 返回 查询 sql 为啥查不到的类型 后面 搞个映射吧
|
||
search_value.append(std::to_string(ret.value().m_sri.subcommand()).c_str());
|
||
user_show_info = false;
|
||
}
|
||
} else {
|
||
user_show_info = false;
|
||
search_value = "键入数据不合法!";
|
||
}
|
||
|
||
// 添加显示数据
|
||
QStringList list;
|
||
list.append(search_value);
|
||
|
||
// 使用数据列表创建数据显示模型
|
||
QStringListModel* model = new QStringListModel(list);
|
||
// 加载到 view
|
||
ui->listView->setModel(model);
|
||
//设置模型到listview上 不可编辑
|
||
ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
||
// 显示数据右键菜单
|
||
// ui->listView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||
ui->listView->setContextMenuPolicy(Qt::ActionsContextMenu);
|
||
|
||
// void QWidget::contextMenuEvent ( QContextMenuEvent* );
|
||
// void QWidget::customContextMenuRequested( const QPoint& pos );
|
||
|
||
//右击绑定事件
|
||
// connect(ui->listView, SIGNAL(customContextMenuRequested(const QPoint&)),
|
||
// this, SLOT(show_Contextmenu(const QPoint&)));
|
||
}
|
||
|
||
|
||
// 重载此函数 右键 菜单 内容
|
||
// 但需要 ui->listView->setContextMenuPolicy(Qt::ActionsContextMenu); 绑定事件
|
||
void addfrindwindow::contextMenuEvent(QContextMenuEvent *) {
|
||
if (user_show_info) {
|
||
QMenu *cmenu = new QMenu(ui->listView);
|
||
|
||
QAction *addAction = cmenu->addAction("添加");
|
||
QAction *userHomeAction = cmenu->addAction("个人主页");
|
||
QAction *sayHelloAction = cmenu->addAction("打招呼");
|
||
|
||
connect(addAction, SIGNAL(triggered(bool)), this, SLOT(add_friends_action()));
|
||
connect(userHomeAction, SIGNAL(triggered(bool)), this, SLOT(user_home_action()));
|
||
connect(sayHelloAction, SIGNAL(triggered(bool)), this, SLOT(say_hello_action()));
|
||
|
||
cmenu->exec(QCursor::pos());
|
||
ui->listView->selectionModel()->clear();
|
||
|
||
delete cmenu;
|
||
// 堆内的参数 不用delete 还有qt有文件树? 用不上特严格的delete
|
||
// delete addAction;
|
||
// delete userHomeAction;
|
||
// delete sayHelloAction;
|
||
}
|
||
}
|
||
|
||
|
||
void addfrindwindow::add_friends_action() {
|
||
// userOperation;
|
||
}
|
||
|
||
void addfrindwindow::user_home_action() {
|
||
printf("222");
|
||
|
||
}
|
||
|
||
void addfrindwindow::say_hello_action() {
|
||
printf("333");
|
||
}
|
||
|
||
|
||
|
||
|
||
|