On my Windows 10 install of QGIS 3.10 the default folder is set in the properties of the shortcut used to start QGIS (on my system the shortcut is located in the following folder C:\Users\username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs).
As a word of caution several shortcuts are created on a Windows install - make sure you change the one you use to start QGIS.
Right clicking on the Shortcut and choosing properties from the menu allows me to see and change the 'Start in:' folder location, which changes where my QGIS session saves newly created layers by default:
So if I fire up QGIS using the shortcut and create a new point shp file, I can type the name directly into the 'File name' box without clicking the dots:
...and when I click OK my 'test' shp file is saved to the folder set by the 'Start in' location of the shortcut:
Changing where shp files are saved to match a project home folder is possible, but not absolutely seamless as QGIS uses the default folder set by the shortcut used to start it until you click the dots in the New Shapefile Layer dialogue box.
Once you click those dots QGIS reads the settings from 'lastVectorFileFilterDir' in the settings file QGIS3.ini. You can use this behaviour to write settings to that file that change where several of QGIS's dialogues boxes look.
Open up the project you want to work with and run the following code in the Python console:
import os
from qgis.core import QgsProject
from PyQt5.QtCore import QSettings
prjhomepath = QgsProject.instance().homePath()
if os.path.exists(prjhomepath):
QSettings().setValue('/UI/lastVectorFileFilterDir',prjhomepath)
The code sets the variable 'prjhomepath' to the projects home folder, checks to see if it exists, if it does then it changes the lastVectorFileFilterDir folder setting to match. To check it's worked go to create a new shp file, click on the dots:
and the dialogue should open in the project home folder. Clicking on the dots is crucial though - until you do that QGIS uses the path set by the shortcut used to start it.
Clicking the dots makes QGIS read the QGIS3.ini file to get the folder location. The good news is you only need to do it once after you've run the code.
To try and automate the folder change you could wrap the code in a macro, that runs each time you open your project. You might have to tweak your Settings->Options to allow the macro to run
As you can see from the code I'm changing a few default folder settings!
Rather than having to mess around with code/macros it would be great to have a QGIS project setting that allowed you to tick a box to use the home folder as the default file location. It would also be good if QGIS used the folder settings in QGIS3.ini on start up rather than on dialogue initiation which seems to currently be the case.
Hope the above helps!