The below link may help to get some idea about Keyword driven testing.
In case of keyword driven testing, we need to do proper planning and initial huge effort. Anyway it will give benefit of easy maintenance and easily adding more test cases/scenarios.
As we see the keyword view in QTP IDE, the keyword driven testing involves specifying the test steps in below format
Object Action parameter
Browser("FireFox").Page("QualityPointHome").webEdit("username") is the Object
"Set" is the Action
"QualityPoint" is the parameter
Here we can change any of the three things to create test steps.
Regarding your question, the framework design will purely based on your requirements and your way of thinking. There is no Solid rule to follow.
Personally, I would like to have my own framework (hybrid framework) designed according to my own requirements.
Anyway, the best practice is, we should create below sub folders in your root folder.
ObjectRepository-> To keep your shared object repositories.
Datatables->To keep QTP data tables and external Excel sheets.
Config-> To keep environment variable xml file
RecoveryScenario ->To keep your recovery scenario files.
Tests-> You can keep your QTP Tests here. You may include Test containing Reusable Actions here. And a Test which is getting used as driver script can also be stored here.
library->you can keep your vbs file which contains vbscript functions.
Results-> You can store Result files (Either QTP result file or customized result file) here.
Note that the above thing is NOT answer for your question. Just I am trying to explain that there won't be any solid rules/approach for creating QTP framework.
eBook for learning Software Testing and QTP Automation.