IM_Client/src/Source/addfrindwindow.cpp
dongl 65b659948a 添加时,搜索好友 然后右键 选择操作
后续页面改下  listView 下面 在加上验证div,平时hide 查询需要验证的时,show
考虑 打招呼 也向上个div一样 还是, 直接添加到临时会话, 添加到好友列表内?
2023-06-07 20:05:54 +08:00

122 lines
3.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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");
}