-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimporttable.cpp
More file actions
114 lines (80 loc) · 3.3 KB
/
importtable.cpp
File metadata and controls
114 lines (80 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "importtable.h"
#include "ui_importtable.h"
#include<QStandardItemModel>
#include<QStringListModel>
#include"subordinate_function.h"
#include<share.h>
#include"import_descriptor.h"
#include"add_import.h"
#include <QMenu>
#include <QAction>
#include<QMessageBox>
#include <QDialog>
ImportTable::ImportTable(QWidget *parent) :
QDialog(parent),
ui(new Ui::ImportTable)
{
ui->setupUi(this);
importlist=ui->tableView;
details=ui->tableView_2;
setWindowTitle("Import Table");
ui->tableView->verticalHeader()->hide();
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
ui->tableView->setContextMenuPolicy(Qt::CustomContextMenu);
ui->tableView_2->verticalHeader()->hide();
ui->tableView_2->setSelectionBehavior(QAbstractItemView::SelectRows);
//发送信息到Show_Details()中
connect(ui->tableView,SIGNAL(clicked(QModelIndex)),this,SLOT( Show_Details() ));
//右键出现菜单
connect(ui->tableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
}
ImportTable::~ImportTable()
{
delete ui;
}
//右键菜单
void ImportTable::slotContextMenu(QPoint pos){
QAction *Add_Import = new QAction ( "Add Import...",this);
//练接到Add_Import(),处理菜单中的事件
connect(Add_Import, SIGNAL(triggered()), this, SLOT(Add_Import()));
QMenu *right_Menu = new QMenu(ui->tableView);
right_Menu->addAction(Add_Import);
QModelIndex index = ui->tableView->indexAt(pos);
if (index.isValid()){
right_Menu->exec(QCursor::pos()); // 菜单出现的位置为当前鼠标的位置
}
}
void ImportTable::Add_Import(){
class Add_Import add_import;
add_import.show();
add_import.exec();
// close();
}
void ImportTable::Show_Details(){
QAbstractItemModel *importlist_model = ui->tableView->model ();
int row = ui-> tableView ->currentIndex().row();
QModelIndex OriginalFirstThunk_index = importlist_model->index(row,1);
QModelIndex FirstThunk_index = importlist_model->index(row,5);
QString OriginalFirstThunk_QString = importlist_model->data(OriginalFirstThunk_index).toString();
QString FirstThunk_QString = importlist_model->data(FirstThunk_index).toString();
QStandardItemModel* model = new QStandardItemModel(this);
model->setColumnCount(5);
model->setHeaderData(0,Qt::Horizontal, "ThunkRVA");
model->setHeaderData(1,Qt::Horizontal,"ThunkOffset");
model->setHeaderData(2,Qt::Horizontal,"ThunkValue");
model->setHeaderData(3,Qt::Horizontal,"Hint");
model->setHeaderData(4,Qt::Horizontal,"ApiName");
int c=0;
_sopen_s(&c,charfilename,_O_BINARY,_SH_DENYWR,_S_IREAD);
Import_Descriptor import_descriptor(c);
import_descriptor.Show_Thunk_in_ViewTable(model,OriginalFirstThunk_QString,FirstThunk_QString);
ui->tableView_2->setModel(model);
ui->tableView_2->setColumnWidth(0, 100);
ui->tableView_2->setColumnWidth(1, 130);
ui->tableView_2->setColumnWidth(2, 130);
ui->tableView_2->setColumnWidth(3, 130);
ui->tableView_2->setColumnWidth(4, 350);
int a=_close(c);
if(a){QMessageBox::warning(this, tr("错误"), tr("_close()函数失败,错误 %1").arg(a), QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton);}
}