日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

关于qt学习的一点小记录(1)

發布時間:2025/5/22 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于qt学习的一点小记录(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今日為了應付學校作業要求

決定現學qt來制作界面

畢竟c++不像在這方面c#可以那么方便

?

qt主要依靠信號、槽來實現類似winform中的消息

鑒于要盡快做完,故而沒有細看qt

只是大概了解了下界面的制作方法

所以依然還有不少問題

?

好了我先從qt設計器開始了。

嗯,很好用的界面編輯器。。一目了然啊~~~

遇到的問題有:

1、槽明明在窗口類聲明了,可設計器還是找不到...

解決:這個應該還需要在某些地方增加點代碼,畢竟我find了一下別人demo的槽函數名字,發現出現在了好幾個地方

嗯。。這次時間關系沒有深究,百度了一下,應該在設計器的左上角位置有個編輯信號/槽

然后拖動控件改變發送者接受者等等。

?

?

最后在主類中加入在設機器中添加時槽函數的名字:

?

public slots://添加進程槽void rcv_addp();//刪除進程槽void rcv_killp();//顯示對應進程段頁表void rcv_show();//刷新進程表void rcv_flushow();//調度進程void rcv_play();

?

?

2、與控件有關的設置網上資料略少,查找了不少時間,故而記錄一下

主要關于tableview,combobox的

?

tableview://tableview可以通過itemview來設置各類參數以及添加刪除數據 QStandardItemModel *memmodel;memmodel = new QStandardItemModel();//設置列 memmodel->setColumnCount(2);//設置每列的頭名稱(注意中文要用QString::fromLocal8Bit()...不要問我為什么...) memmodel->setHeaderData(0, Qt::Horizontal, QString::fromLocal8Bit("地址")); memmodel->setHeaderData(1, Qt::Horizontal, QString::fromLocal8Bit("空間"));//將model設置給ui的tableview ui.tableView->setModel(memmodel); //設置表頭為固定 ui.tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed); ui.tableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Fixed);//設置表頭寬度..我是按百分比設置的 ui.tableView->setColumnWidth(0, 0.3 * ui.tableView->geometry().width()); ui.tableView->setColumnWidth(1, 0.58 * ui.tableView->geometry().width());//設置cell中每列的高度 ui.tableView->verticalHeader()->setDefaultSectionSize(12); //隱藏行號 ui.tableView->verticalHeader()->setHidden(true); //設置一次選中一行 ui.tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //添加一行元素//從左到右三個參數依次是:第i行cell,第0列,內容。注意內容要是QString類型的 memmodel->setItem(i, 0, new QStandardItem(QString::number(mt.getphyaddr(i))));

?

?

噢...這代碼著色好像和直接粘貼沒區別。。。

?

//獲取選中的數行中第i行第1列的值 QItemSelectionModel *selections = ui.tableView_state->selectionModel();QModelIndexList selected = selections->selectedRows();QModelIndex t_data;mt.addmaxclock();for (auto index : selected) {//這里的selected集合即為選中的所有cell的集合,一次取一個cell//然而因為我設置的一次選中一行cell,這里我只需要獲取第一列即可t_data = statemodel->index(index.row(), 0);// QMessageBox::information(this, "aaa", t_data.data().toString());int pgnum = t_data.data().toInt();if (!it->pg[pgnum]->isRun()) {mt.addpagetomem(it->pg[pgnum]);}else {it->pg[pgnum]->clock = mt.getmaxclock();mt.addmaxclock();}}

?

?

接下來是combobox的

?

combobox:

?

//清空combobox ui.cb_killp->clear();//添加item(第一個參數為text...第二個不知道什么用,顯然不是列表的索引號) ui.cb_killp->addItem(elem.name.c_str(), elem.pid);//獲取當前combobox選中的值string name = ui.cb_killp->currentText().toStdString();//順便,combobox中currentindexchanged信號的問題//鑒于我每次增加一個process的時候,都會刷新一次combobox的列表//這樣也會出發currentindexchanged信號,同時他的槽函數也會更改一下combobox的內容//這樣又會發出一個currentindexchanged信號,以至于死循環//解決方法是刷新combobox的時候關閉信號即可 ui.cb_seep->blockSignals(true);

?

最后記錄一下vector的問題

我意圖用一個指針來指向vector中的一個數據...

當然是可以的..但當vector容量增加的時候,地址也會發生改變

最后干脆改成數組了..

?

轉載于:https://www.cnblogs.com/magina888/p/4570039.html

總結

以上是生活随笔為你收集整理的关于qt学习的一点小记录(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。