最近在用QT写PE结构的分析工具,遇到了很多新的知识,在此记录,方便查阅若有新的收获,也会更新在此。
QT
QButton
QButton设置图片背景悬停样式
ui->logButton->setStyleSheet("QPushButton{border-image: url(:/icon/Image/表单定制01.png);}"//正常
"QPushButton:hover{border-image: url(:/icon/Image/表单定制02.png);}"//悬停
"QPushButton:pressed{border-image: url(:/icon/Image/表单定制03.png);}");//点击
QToolButton点击出现下拉菜单
ui->ToolsBox->setPopupMode(QToolButton::InstantPopup);//一定要加上
ui->ToolsBox->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
QMenu *toolMenu=new QMenu(ui->ToolsBox);
toolMenu->addAction(new QAction(QIcon(":/icon/Image/计算器.png"),"地址转换器(Ctrl+C)",toolMenu));
toolMenu->addAction(new QAction(QIcon(":/icon/Image/关于我们@2x.png"),"关于本软件(Ctrl+A)",toolMenu));
加上如下Qss可以去掉因为添加下拉菜单而导致的小三角
"QToolButton::menu-indicator{image:None;}"); //取消掉工具栏的小三角
QTableWiget
QTableWiget的基本用法
QStringList headList;
headList<<"Test"<<"Value";
m_iRow = 5;//表格当前行数
m_iCol = headList.size();//表格当前列数
ui->tableWidget->setColumnCount(m_iCol);//设置列数
ui->tableWidget->setRowCount(m_iRow);//设置行数
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//自适应列宽
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//表格不能被编辑
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//整行选中效果
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);//设置为只能单选
ui->tableWidget->verticalHeader()->setVisible(false); //隐藏列表头
ui->tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头
ui->tableWidget->setHorizontalHeaderLabels(headList);//设置表头
ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //可多选(Ctrl、Shift、 Ctrl+A 等)
int iCurCount = ui->tableWidget->currentRow();//获取当前行数
//在单元格里面添加控件
QComboBox *comBox = new QComboBox(ui->tableWidget);
comBox->addItem("Y");
comBox->addItem("N");
ui->tableWidget->setCellWidget(4,0,comBox);
QLineEdit * l = new QLineEdit(ui->tableWidget);
l->setText(