标题:C++课程设计(教务管理系统)
作者:hackware
日期:2013-07-14 11:49
内容:
花了4天时间做了个教务管理系统,现在基本实现了管理员的功能,当管理员添加教师时,教师的学院属性默认从下拉框中选择,而下拉框中的数据是在启动程序的时候设置的,这样就造成了一个问题,当在“添加院系信息”选项卡添加一个新的学院后,“添加教师信息”选项卡中的“所属学院”下拉框中的信息得不到及时更新。除非重启程序,现在我想实现当“添加教师信息”选项卡被点击后,能重新设置下拉框的值,貌似有一个focusInEvent(),但我试过不能用,求大神给点思路!感激不尽。问题解决之后开放全部源码。
#1 [alexltr 07-14 15:32]
成功添加学院信息后,发送一个自定义信号 emit xxxxxx;
将这个信号与一个槽函数连接 connect();
在这个槽函数中执行你程序启动时设置“所属学院”下拉框的相关代码
或
直接用addItem将新添加的学院添加到所属学院”下拉框中
就可以啦!
#2 回 1楼(alexltr) 的帖子 [hackware 07-14 17:45]
很高兴看到你的回复,但是“录入教师信息”和”录入院系信息“属于不同的对话框。二者并无联系,怎么来视线信号和槽的连接呢?我尝试用eventFilter(),收到部分效果但有bug。部分代码如下:
//insert_college
#ifndef ADMINISTRATOR_INSERTCOLLEGEDIALOG_H
#define ADMINISTRATOR_INSERTCOLLEGEDIALOG_H
#include "ui_administrator_insertcollegedialog.h"
#include "departmentsfileitem.h"
#include
#include
#include
#include
class InsertCollegeDialog:public QDialog,Ui::InsertCollegeDialog
{
Q_OBJECT
public:
InsertCollegeDialog(QWidget *parent = 0)
:QDialog(parent)
{
setupUi(this);
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
loadDataToTable();
connect(submitButton,SIGNAL(clicked()),this,SLOT(insertData()));
}
private slots:
void insertData()
{
if(check(idEdit->text().trimmed().toStdString(),nameEdit->text().trimmed().toStdString()))
{
DepartmentsFileItem item(idEdit->text().trimmed().toInt(),nameEdit->text().trimmed().toStdString().c_str());
if(!item.exist())
{
DepartmentsFileItem::insertItem(idEdit->text().trimmed().toInt(),nameEdit->text().trimmed().toStdString().c_st ..
#3 [似水流年 07-14 18:43]
简单的方法就是和主窗体联系,在主窗体中创建一个公用信号,然后就可以用“录入教师信息”和”录入院系信息“对话框同时连接主窗体公用信号做不同的操作,一个对话框通过信号出发主窗体公用信号,另一个对话框相应公用信号添加新增学院项目。
#4 回 楼主(hackware) 的帖子 [黑曼巴的信仰 08-15 16:06]
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
#5 [492891404 12-28 14:23]
楼主 能来个源代码么?