在类中重写Qt函数

时间:2018-11-13 12:29:24

标签: c++ qt override qdialog

我有一个类型为QDialog的简单对话框。当用户单击“确定”按钮时,我想在关闭表单并返回到调用方(主表单)之前进行一些验证。

我尝试在“ CustomDialog.cpp”文件中添加以下代码:

void CustomDialog::accept(){
  // My code...
}

但是我得到这个错误:

  

错误:虚拟函数'accept'具有不同的调用约定   属性('void()')比其覆盖的功能(具有   调用约定'void() attribute (((thiscall))')

我在做什么错?我也需要在CustomDialog.hpp中添加一些内容吗?

1 个答案:

答案 0 :(得分:0)

在您的<script> export default { data() { return { list: [], task: { id: '', body: '' } }; }, created() { this.fetchTaskList(); }, methods: { fetchTaskList() { axios.get('api/tasks').then((res) => { this.list = res.data; }); }, createTask() { axios.post('api/tasks', this.task) .then((res) => { this.task.body = ''; this.edit = false; this.fetchTaskList(); }) .catch((err) => console.error(err)); }, deleteTask(id) { axios.delete('api/tasks/' + id) .then((res) => { this.fetchTaskList() }) .catch((err) => console.error(err)); }, updateTask() { axios.patch('api/tasks/' + this.task) .then((res) => { this.task.body = ''; this.edit = false; this.fetchTaskList() }) .catch((err) => console.error(err)); }, } } </script> <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Task; class TaskController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { return Task::latest()->get(); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $this->validate($request, [ 'body' => 'required|max:500' ]); return Task::create(['body' => request('body')]); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $this->validate($request, [ 'body' => 'required|max:500' ]); return Task::update(['body' => request('body')]); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $task = Task::findOrFail($id); $task->delete(); return 204; } } 中,您应该在.hpp类内声明accept()方法。即CustomDialog下的void accept() override;